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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jamborm at gcc dot gnu.org
            Version|unknown                     |11.0
             Status|UNCONFIRMED                 |NEW
           Keywords|                            |missed-optimization
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2021-04-15

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Different inlining somehow causes different CCP:

-;; Function n (n, funcdef_no=3, decl_uid=1980, cgraph_uid=4, symbol_order=14)
+;; Function j (j, funcdef_no=2, decl_uid=1977, cgraph_uid=3, symbol_order=13)

 Adding destination of edge (0 -> 2) to worklist

 Simulating block 2

 Visiting statement:
-a.0_1 = a;
-which is likely CONSTANT
-Lattice value changed to CONSTANT 0.  Adding SSA edges to worklist.
-marking stmt to be not simulated again
-
-Visiting statement:
-_6 = a.0_1 & 65535;
+_8 = q_2(D) & 65535;
 which is likely CONSTANT
-Match-and-simplified a.0_1 & 65535 to 0
-Lattice value changed to CONSTANT 0.  Adding SSA edges to worklist.
+Lattice value changed to CONSTANT 0x0 (0xffff).  Adding SSA edges to worklist.

so we know 'a' is zero (after IPA) but at -O3 a is passed as parameter
(but IPA CP didn't figure out its constant value).

Still odd that the inlining decision is different.

Reply via email to