[Bug tree-optimization/101061] tree-vrp misoptimization on skylake+ using union-based aliasing

alexander.grund@tu-dresden.de gcc-bugzilla@gcc.gnu.org
Wed Jun 16 07:34:27 GMT 2021


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

Alexander Grund <alexander.grund@tu-dresden.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Version|8.4.0                       |8.5.0
      Known to fail|                            |8.3.0, 8.4.0, 8.5.0
      Known to work|                            |9.1.0

--- Comment #10 from Alexander Grund <alexander.grund@tu-dresden.de> ---
> My suspicion is, that GCC loads the value of slot2 before constructing the object

I have just confirmed that: memsetting the whole region with a magic value
shows exactly that: Where a new value should be created and then returned, then
the memset-value is returned instead. When the map already has an entry for the
key (i.e. no new value created) then the existing value (i.e. the correct one)
is returned.

Question now: Is the in-place construction UB and just happens to "normally"
work or is that an optimizer bug that was fixed or gone latent? And how to
proceed to further narrow this down?


More information about the Gcc-bugs mailing list