[Bug rtl-optimization/80401] [7 regression] gcc.target/powerpc/dimode_off.c and gcc.target/powerpc/pr79038-1.c fail starting with r246764
meissner at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Apr 13 17:00:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80401
Michael Meissner <meissner at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2017-04-13
CC| |meissner at gcc dot gnu.org
Ever confirmed|0 |1
--- Comment #3 from Michael Meissner <meissner at gcc dot gnu.org> ---
While the underlying bug is due to an LRA change, the fix for each of these in
the rs6000 backend is likely to be different.
The first failure (dimode_off) is one of these tests that are so hard-wired to
the compiler that it likely needs to change every so often.
Yes, it can become a regression, but it only happens on a power8/power9 system
and the offset of a load/store is not divisible by 4. Due to alignment issues,
the DImode load/store is almost always divisible by 4, unless you are loading
up unaligned memory, or specifically add odd numbers to a char * pointer and
convert it to a long pointer. These should be rare in practice.
The underlying reason is the LD and STD instructions use the bottom 2 bits for
encoding the instruction, while the LFD and STFD instructions allows a full
16-bit offset.
The second failure listed is 79308-1.c that makes sure an optimization I put in
still works. However, since the optimization is converting a char/short value
to __float128 on a Power9
More information about the Gcc-bugs
mailing list