]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/c-family/c.opt
re PR target/39082 (union with long double doesn't follow x86-64 psABI)
authorH.J. Lu <hongjiu.lu@intel.com>
Wed, 18 Feb 2009 02:16:03 +0000 (02:16 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Wed, 18 Feb 2009 02:16:03 +0000 (18:16 -0800)
commitbce08d5003e0cb1f63cbe92895be8cbcc5c48547
tree69c176a033d12f090d8e12d52fe61b4ace95034f
parent5600f233ef5f740908f0480b76936e503b1d4cda
re PR target/39082 (union with long double doesn't follow x86-64 psABI)

gcc/

2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>

PR target/39082
* c.opt (Wabi): Support C and ObjC.
(Wpsabi): New.

* c-opts.c (c_common_handle_option): Handle OPT_Wabi.

* config/i386/i386.c (classify_argument): Warn once about the ABI
change when passing union with long double.

* doc/invoke.texi: Update -Wabi for warning psABI changes.

gcc/testsuite/

2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>

PR target/39082
* g++.dg/compat/struct-layout-1_generate.c (dg_options): Add
-Wno-abi for x86.
* gcc.dg/compat/struct-layout-1_generate.c (dg_options): Likewise.

* gcc.target/i386/pr39082-1.c: New.

* gcc.target/x86_64/abi/abi-x86_64.exp (additional_flags): Add
-Wno-abi.

* gcc.target/x86_64/abi/args.h (XMM_T): Add _m64 and _m128 if
CHECK_M64_M128 is defined.
(check_f_arguments): Add "do".
(check_vector_arguments): New.
(check_m64_arguments): Likewise.
(check_m128_arguments): Likewise.

* gcc.target/x86_64/abi/defines.h: Include <xmmintrin.h>.
(CHECK_M64_M128): Define.

* gcc.target/x86_64/abi/test_m64m128_returning.c: New.  Based
on abitest.
* gcc.target/x86_64/abi/test_passing_m64m128.c: Likewise.

* gcc.target/x86_64/abi/test_passing_structs.c: Define __m128
tests only if CHECK_M64_M128 is defined.

* gcc.target/x86_64/abi/test_passing_structs.c (m128_struct): New.
(m128_2_struct): Likewise.
(check_struct_passing5): Likewise.
(check_struct_passing6): Likewise.
(main): Test struct with __m128 if CHECK_M64_M128 is defined.

* gcc.target/x86_64/abi/test_passing_unions.c (un4): New.
(un5): Likewise.
(check_union_passing4): Likewise.
(main): Test union with __m128 if CHECK_M64_M128 is defined.

From-SVN: r144257
16 files changed:
gcc/ChangeLog
gcc/c-opts.c
gcc/c.opt
gcc/config/i386/i386.c
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c
gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c
gcc/testsuite/gcc.target/i386/pr39082-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/x86_64/abi/abi-x86_64.exp
gcc/testsuite/gcc.target/x86_64/abi/args.h
gcc/testsuite/gcc.target/x86_64/abi/defines.h
gcc/testsuite/gcc.target/x86_64/abi/test_m64m128_returning.c [new file with mode: 0644]
gcc/testsuite/gcc.target/x86_64/abi/test_passing_m64m128.c [new file with mode: 0644]
gcc/testsuite/gcc.target/x86_64/abi/test_passing_structs.c
gcc/testsuite/gcc.target/x86_64/abi/test_passing_unions.c