https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82692

--- Comment #6 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Segher Boessenkool from comment #5)
> The combination 8 -> 9 (where the GE is introduced) does not call
> SELECT_CC_MODE at all.

The problematic conversion is 7 -> 9, *after* 8 -> 9 is performed.

Please see this gdb session:

(gdb) b ix86_cc_mode

Breakpoint 1, ix86_cc_mode (code=GE, op0=0x7fffeff09ab0, op1=0x7fffeff09960) at
/home/uros/gcc-svn/trunk/gcc/config/i386/i386.c:21718
21718   {
(gdb) bt
#0  ix86_cc_mode (code=GE, op0=0x7fffeff09ab0, op1=0x7fffeff09960) at
/home/uros/gcc-svn/trunk/gcc/config/i386/i386.c:21718
#1  0x00000000012eb45d in simplify_set (x=x@entry=0x7fffeff09c60) at
/home/uros/gcc-svn/trunk/gcc/combine.c:6788
#2  0x00000000012ecb48 in combine_simplify_rtx(rtx_def*, machine_mode, int,
int) () at /home/uros/gcc-svn/trunk/gcc/combine.c:6293
#3  0x00000000012eee32 in subst(rtx_def*, rtx_def*, rtx_def*, int, int, int) ()
at /home/uros/gcc-svn/trunk/gcc/combine.c:5573
#4  0x00000000012f1e42 in try_combine(rtx_insn*, rtx_insn*, rtx_insn*,
rtx_insn*, int*, rtx_insn*) () at /home/uros/gcc-svn/trunk/gcc/combine.c:3332
#5  0x00000000012f7d91 in combine_instructions (nregs=<optimized out>,
f=<optimized out>) at /home/uros/gcc-svn/trunk/gcc/combine.c:1301

(gdb) f4
#4  0x00000000012f1e42 in try_combine(rtx_insn*, rtx_insn*, rtx_insn*,
rtx_insn*, int*, rtx_insn*) () at /home/uros/gcc-svn/trunk/gcc/combine.c:3332
3332          newpat = subst (PATTERN (i3), i2dest, i2src, 0, 0,

(gdb) p debug_rtx (i3)
(insn 9 8 10 2 (set (reg:CCFPU 17 flags)
        (compare:CCFPU (reg:DF 95)
            (reg/v:DF 91 [ x ]))) "pr82692.c":9 2147483647 {NOOP_MOVE}
     (nil))

(gdb) b combine.c:3333
Breakpoint 2 at 0x12f1dfb: file /home/uros/gcc-svn/trunk/gcc/combine.c, line
3333.

(gdb) c
Continuing.

Breakpoint 2, try_combine(rtx_insn*, rtx_insn*, rtx_insn*, rtx_insn*, int*,
rtx_insn*) () at /home/uros/gcc-svn/trunk/gcc/combine.c:3334
3334                          || ((i0_feeds_i2_n || (i0_feeds_i1_n &&
i1_feeds_i2_n))

(gdb) p debug_rtx (newpat)
(set (reg:CCFP 17 flags)
    (compare:CCFP (reg:DF 95)
        (reg/v:DF 91 [ x ])))

And also changes mode of the conditional jump.

Reply via email to