https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85358
--- Comment #2 from Michael Meissner <meissner at gcc dot gnu.org> --- Author: meissner Date: Fri Jun 22 14:19:45 2018 New Revision: 261893 URL: https://gcc.gnu.org/viewcvs?rev=261893&root=gcc&view=rev Log: [gcc] 2018-06-22 Michael Meissner <meiss...@linux.ibm.com> Back port from trunk 2018-06-18 Michael Meissner <meiss...@linux.ibm.com> PR target/85358 * config/rs6000/rs6000-modes.def (toplevel): Rework the 128-bit floating point modes, so that IFmode is numerically greater than TFmode, which is greater than KFmode using FRACTIONAL_FLOAT_MODE to declare the ordering. This prevents IFmode from being converted to TFmode when long double is IEEE 128-bit on an ISA 3.0 machine. Include rs6000-modes.h to share the fractional values between genmodes* and the rest of the compiler. (IFmode): Likewise. (KFmode): Likewise. (TFmode): Likewise. * config/rs6000/rs6000-modes.h: New file. * config/rs6000/rs6000.c (rs6000_debug_reg_global): Change the meaning of rs6000_long_double_size so that 126..128 selects an appropriate 128-bit floating point type. (rs6000_option_override_internal): Likewise. * config/rs6000/rs6000.h (toplevel): Include rs6000-modes.h. (TARGET_LONG_DOUBLE_128): Change the meaning of rs6000_long_double_size so that 126..128 selects an appropriate 128-bit floating point type. (LONG_DOUBLE_TYPE_SIZE): Update comment. * config/rs6000/rs6000.md (trunciftf2): Correct the modes of the source and destination to match the standard usage. (truncifkf2): Likewise. (copysign<mode>3, IEEE iterator): Rework copysign of float128 on ISA 2.07 to use an explicit clobber, instead of passing in a temporary. (copysign<mode>3_soft): Likewise. [libgcc] 2018-06-22 Michael Meissner <meiss...@linux.ibm.com> Back port from trunk 2018-06-18 Michael Meissner <meiss...@linux.ibm.com> * config/rs6000/t-float128 (FP128_CFLAGS_SW): Compile float128 support modules with -mno-gnu-attribute. * config/rs6000/t-float128-hw (FP128_CFLAGS_HW): Likewise. Added: branches/gcc-8-branch/gcc/config/rs6000/rs6000-modes.h Modified: branches/gcc-8-branch/gcc/ChangeLog branches/gcc-8-branch/gcc/config/rs6000/rs6000-modes.def branches/gcc-8-branch/gcc/config/rs6000/rs6000.c branches/gcc-8-branch/gcc/config/rs6000/rs6000.h branches/gcc-8-branch/gcc/config/rs6000/rs6000.md branches/gcc-8-branch/libgcc/ChangeLog branches/gcc-8-branch/libgcc/config/rs6000/t-float128 branches/gcc-8-branch/libgcc/config/rs6000/t-float128-hw