[Bug rtl-optimization/105653] [10/11/12/13 Regression] '-fcompare-debug' failure w/ -O2

pinskia at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Oct 27 00:42:02 GMT 2022


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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2022-10-27

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
IRA adds the REG_EQUIV note even for both with/without -g.

But it was removed in peephole2 for -g case.
In the -g case we get the following extra output in -g for peephole2 starting
with:

df_worklist_dataflow_doublequeue: n_basic_blocks 8 n_edges 10 count 9 (  1.1)
....
DCE: Deleting insn 15
deleting insn with uid = 15.
...

insn 15 was:
(insn:TI 15 13 16 2 (set (reg/f:DI 1 x1 [101])
        (plus:DI (reg/f:DI 0 x0 [orig:99 thisD.4083 ] [99])
            (const_int 8 [0x8]))) "/app/example.cpp":9:25 discrim 1 141
{*adddi3_aarch64}
     (expr_list:REG_UNUSED (reg/f:DI 1 x1 [101])
        (nil)))

in sched_fusion.

But in the -g0 case, it was not removed inside peephole2.

Someone who understands DF DCE better should look into this on why it was not
removed inside peephole2 without -g.

The instruction without -g:
(insn:TI 8 3 9 2 (set (reg/f:DI 1 x1 [101])
        (plus:DI (reg/f:DI 0 x0 [orig:99 this ] [99])
            (const_int 8 [0x8]))) "/app/example.cpp":9:25 discrim 1 141
{*adddi3_aarch64}
     (expr_list:REG_UNUSED (reg/f:DI 1 x1 [101])
        (nil)))

Which looks exactly the same even.


More information about the Gcc-bugs mailing list