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.