machmode.h (mode_complex): Add support to give the complex mode for a given mode.
authorMichael Meissner <meissner@linux.vnet.ibm.com>
Mon, 2 May 2016 23:23:45 +0000 (23:23 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Mon, 2 May 2016 23:23:45 +0000 (23:23 +0000)
commit4304ccfd019194af658e777c9d5d2a3dbebbc825
tree7e53a4f7ecf1db3452d71051ae33009438550f2a
parentfd39794afaedab9f102cede19852ec74e8a1ee17
machmode.h (mode_complex): Add support to give the complex mode for a given mode.

[gcc]
2016-05-02  Michael Meissner  <meissner@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/fortran]
2016-05-02  Michael Meissner  <meissner@linux.vnet.ibm.com>

* trans-types.c (gfc_build_complex_type):

[gcc/testsuite]
2016-05-02  Michael Meissner  <meissner@linux.vnet.ibm.com>

* gcc.target/powerpc/float128-complex-1.c: New tests for complex
__float128.
* gcc.target/powerpc/float128-complex-2.c: Likewise.

From-SVN: r235794
13 files changed:
gcc/ChangeLog
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.h
gcc/doc/extend.texi
gcc/fortran/ChangeLog
gcc/fortran/trans-types.c
gcc/genmodes.c
gcc/machmode.h
gcc/stor-layout.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/powerpc/float128-complex-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/float128-complex-2.c [new file with mode: 0644]
gcc/tree.c