This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
PR target/83862 pointed out a problem I put into the 128-bit floating point type signbit optimization. The issue is we want to avoid doing a load to a floating point/vector register and then a direct move to do signbit, so we change the load to load the upper 64-bits of the floating point value to get the sign bit. Unfortunately, if the type is IEEE 128-bit and memory is addressed with an indexed address on a little endian system, it generates an illegal address and generates an internal compiler error. I have tested this on a little endian power8 system, with bootstrap compilers. There was not regression, and the new test passes. Can I install this into the trunk? The same code is also in GCC 6 and 7. While, -mabi=ieeelongdouble is not supported in those releases, you can get a failure if you use an explicit _Float128 type instead of long double. Assuming that the bug shows up, can I apply these patches to those branches as well? [gcc] 2018-01-16 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/83862 * config/rs6000/rs6000.c (rs6000_split_signbit): Do not create an illegal address on little endian systems if the source value is in memory addressed with indexed addressing. * config/rs6000/rs6000.md (signbit<mode>2_dm): Likewise. (signbit<mode>2_dm_<su>ext): Likewise. [gcc/testsuite] 2018-01-16 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/83862 * gcc.target/powerpc/pr83862.c: New test. -- Michael Meissner, IBM IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA email: meissner@linux.vnet.ibm.com, phone: +1 (978) 899-4797
Attachment:
pr83862.patch01b
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |