On Wed, 22 Jun 2016, Michael Meissner wrote: > On Wed, Jun 15, 2016 at 11:01:05AM +0200, Richard Biener wrote: > > And I don't understand the layout_type change either - it looks to me > > it could just have used > > > > SET_TYPE_MODE (type, GET_MODE_COMPLEX_MODE (TYPE_MODE > > (TREE_TYPE (type)))); > > > > and be done with it. To me that looks a lot safer. > > I made this change in the trunk, and now I would like approval for applying > this code which includes the above change in the GCC 6.2 branch. > > Here is the change for the trunk: > https://gcc.gnu.org/ml/gcc-patches/2016-06/msg01489.html > > I tested it on both a big endian power7 and a little endian power8 systems > with > no regressions. Is it ok to apply to the GCC 6.2 branch?
Ok. Richard. > [gcc] > 2016-06-22 Michael Meissner <meiss...@linux.vnet.ibm.com> > > Back port from trunk > 2016-06-21 Michael Meissner <meiss...@linux.vnet.ibm.com> > > * stor-layout.c (layout_type): Move setting complex MODE to > layout_type, instead of setting it ahead of time by the caller. > > Back port from trunk > 2016-05-11 Alan Modra <amo...@gmail.com> > > * config/rs6000/rs6000.c (is_complex_IBM_long_double, > abi_v4_pass_in_fpr): New functions. > (rs6000_function_arg_boundary): Exclude complex IBM long double > from 64-bit alignment when ABI_V4. > (rs6000_function_arg, rs6000_function_arg_advance_1, > rs6000_gimplify_va_arg): Use abi_v4_pass_in_fpr. > > Back port from trunk > 2016-05-02 Michael Meissner <meiss...@linux.vnet.ibm.com> > > * machmode.h (mode_complex): Add support to give the complex mode > for a given mode. > (GET_MODE_COMPLEX_MODE): Likewise. > * stor-layout.c (layout_type): For COMPLEX_TYPE, use the mode > stored by build_complex_type and gfc_build_complex_type instead of > trying to figure out the appropriate mode based on the size. Raise > an assertion error, if the type was not set. > * genmodes.c (struct mode_data): Add field for the complex type of > the given type. > (blank_mode): Likewise. > (make_complex_modes): Remember the complex mode created in the > base type. > (emit_mode_complex): Write out the mode_complex array to map a > type mode to the complex version. > (emit_insn_modes_c): Likewise. > * tree.c (build_complex_type): Set the complex type to use before > calling layout_type. > * config/rs6000/rs6000.c (rs6000_hard_regno_nregs_internal): Add > support for __float128 complex datatypes. > (rs6000_hard_regno_mode_ok): Likewise. > (rs6000_setup_reg_addr_masks): Likewise. > (rs6000_complex_function_value): Likewise. > * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Likewise. > __float128 and __ibm128 complex. > (FLOAT128_IBM_P): Likewise. > (ALTIVEC_ARG_MAX_RETURN): Likewise. > * doc/extend.texi (Additional Floating Types): Document that > -mfloat128 must be used to enable __float128. Document complex > __float128 and __ibm128 support. > > [gcc/testsuite] > 2016-06-22 Michael Meissner <meiss...@linux.vnet.ibm.com> > > Back port from trunk > 2016-05-02 Michael Meissner <meiss...@linux.vnet.ibm.com> > > * gcc.target/powerpc/float128-complex-1.c: New tests for complex > __float128. > * gcc.target/powerpc/float128-complex-2.c: Likewise. > > -- Richard Biener <rguent...@suse.de> SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)