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

            Bug ID: 103182
           Summary: [12 Regression] Recent change causes code correctness
                    regression
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: law at gcc dot gnu.org
  Target Milestone: ---

This change:

d70ef65692fced7ab72e0aceeff7407e5a34d96d is the first bad commit
commit d70ef65692fced7ab72e0aceeff7407e5a34d96d
Author: Jan Hubicka <j...@suse.cz>
Date:   Wed Nov 10 13:08:41 2021 +0100

    Make EAF flags more regular (and expressive)

    I hoped that I am done with EAF flags related changes, but while looking
into
    the Fortran testcases I noticed that I have designed them in unnecesarily
    restricted way.  I followed the scheme of NOESCAPE and NODIRECTESCAPE which
is
    however the only property tht is naturally transitive.

    This patch replaces the existing flags by 9 flags:

[ ... ]

Is causing gcc.dg/torture/pr45962-2.c to fail on or1k-elf and a few other
platforms at -O2.

You should be able to reproduce this with just a cross compiler since the
.optimized dump after the change above just calls "foo" then aborts.  The check
for the value of i after the call to foo has been eliminated.

There's a bit of dodgy code in foo() from an aliasing standpoint.  I haven't
looked at it real closely though.

Reply via email to