https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102982
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Keywords| |missed-optimization Target Milestone|--- |12.0 Ever confirmed|0 |1 CC| |hubicka at gcc dot gnu.org, | |jamborm at gcc dot gnu.org, | |marxin at gcc dot gnu.org Last reconfirmed| |2021-10-28 Component|tree-optimization |ipa --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- I'd say that's indeed "unfortunate". The main missing optimization though is treating c[0][0][0] = 0; as a "store" when trying to make 'c' constant, not realizing it stores the same value as the static initializer (after making it readonly we'd have to elide all such stores though). That would fix the testcase as to what is likely the desired trigger of the foo() call removal. Honza/Martin?