[Bug target/86994] [9 regression] 64-bit gcc.target/i386/20040112-1.c FAILs
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sat Aug 18 08:37:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86994
Uroš Bizjak <ubizjak at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2018-08-18
CC| |law at gcc dot gnu.org
Ever confirmed|0 |1
--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> ---
It is r263591:
2018-08-16 Vlad Lazar <vlad.lazar@arm.com>
* expmed.h (canonicalize_comparison): New declaration.
* expmed.c (canonicalize_comparison, equivalent_cmp_code): New
function.
* expmed.c (emit_store_flag_1): Add call to canonicalize_comparison.
* optabs.c (prepare_cmp_insn): Likewise.
* rtl.h (unsigned_condition_p): New function which checks if a
comparison operator is unsigned.
That now expands with:
(insn 12 8 13 4 (set (reg:CCGC 17 flags)
(compare:CCGC (reg/v:QI 87 [ status ])
(const_int -1 [0xffffffffffffffff]))) "20040112-1.c":13 9
{*cmpqi_1}
(nil))
instead of:
(insn 10 8 11 4 (set (reg:CCGOC 17 flags)
(compare:CCGOC (reg/v:QI 87 [ status ])
(const_int 0 [0]))) "20040112-1.c":13 5 {*cmpqi_ccno_1}
(nil))
The canonicalization, introduced in r263591 does not universally benefit all
targets. I wonder why TARGET_CANONICALIZE_COMPARISON hook was not used instead.
More information about the Gcc-bugs
mailing list