From 3de69514c3f04c875510f9e3fbc2aeeccf80087c Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 22 Jul 2011 16:04:02 +0000 Subject: [PATCH] Disallow MS ABI in x32 mode. gcc/ 2011-07-22 H.J. Lu * config/i386/i386.c (ix86_option_override_internal): Disallow MS ABI in x32 mode. (ix86_init_builtins): Call ix86_init_builtins_va_builtins_abi only for TARGET_LP64. (ix86_handle_abi_attribute): Check TARGET_LP64 instead of TARGET_64BIT. gcc/testsuite/ 2011-07-22 H.J. Lu * gcc/testsuite/gcc.target/i386/avx-vzeroupper-16.c: Only run on lp64 targets. * gcc/testsuite/gcc.target/i386/avx-vzeroupper-17.c: Likewise. * gcc/testsuite/gcc.target/i386/avx-vzeroupper-18.c: Likewise. * gcc/testsuite/gcc.target/i386/pr43662.c: Likewise. * gcc/testsuite/gcc.target/i386/pr43869.c: Likewise. * gcc.target/x86_64/abi/callabi/callabi.exp: Check ilp32 instead of ia32. From-SVN: r176634 --- gcc/ChangeLog | 9 +++++++++ gcc/config/i386/i386.c | 7 +++++-- gcc/testsuite/ChangeLog | 12 ++++++++++++ gcc/testsuite/gcc.target/i386/avx-vzeroupper-16.c | 2 +- gcc/testsuite/gcc.target/i386/avx-vzeroupper-17.c | 2 +- gcc/testsuite/gcc.target/i386/avx-vzeroupper-18.c | 2 +- gcc/testsuite/gcc.target/i386/pr43662.c | 2 +- gcc/testsuite/gcc.target/i386/pr43869.c | 2 +- .../gcc.target/x86_64/abi/callabi/callabi.exp | 2 +- 9 files changed, 32 insertions(+), 8 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index decebb40749..6ec4ecd18ee 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2011-07-22 H.J. Lu + + * config/i386/i386.c (ix86_option_override_internal): Disallow + MS ABI in x32 mode. + (ix86_init_builtins): Call ix86_init_builtins_va_builtins_abi + only for TARGET_LP64. + (ix86_handle_abi_attribute): Check TARGET_LP64 instead of + TARGET_64BIT. + 2011-07-22 Michael Meissner * config/rs6000/rs6000.c (rs6000_xcoff_strip_dollar): Rewrite to diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 6517064299d..96263ed9835 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -3133,6 +3133,9 @@ ix86_option_override_internal (bool main_args_p) if (!global_options_set.x_ix86_abi) ix86_abi = DEFAULT_ABI; + if (ix86_abi == MS_ABI && TARGET_X32) + error ("MS ABI not supported in x32 mode"); + if (global_options_set.x_ix86_cmodel) { switch (ix86_cmodel) @@ -25493,7 +25496,7 @@ ix86_init_builtins (void) ix86_init_mmx_sse_builtins (); - if (TARGET_64BIT) + if (TARGET_LP64) ix86_init_builtins_va_builtins_abi (); #ifdef SUBTARGET_INIT_BUILTINS @@ -29313,7 +29316,7 @@ ix86_handle_abi_attribute (tree *node, tree name, *no_add_attrs = true; return NULL_TREE; } - if (!TARGET_64BIT) + if (!TARGET_LP64) { warning (OPT_Wattributes, "%qE attribute only available for 64-bit", name); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d4f641e4867..61a244017ce 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,15 @@ +2011-07-22 H.J. Lu + + * gcc/testsuite/gcc.target/i386/avx-vzeroupper-16.c: Only run + on lp64 targets. + * gcc/testsuite/gcc.target/i386/avx-vzeroupper-17.c: Likewise. + * gcc/testsuite/gcc.target/i386/avx-vzeroupper-18.c: Likewise. + * gcc/testsuite/gcc.target/i386/pr43662.c: Likewise. + * gcc/testsuite/gcc.target/i386/pr43869.c: Likewise. + + * gcc.target/x86_64/abi/callabi/callabi.exp: Check ilp32 + instead of ia32. + 2011-07-22 Richard Guenther PR tree-optimization/45819 diff --git a/gcc/testsuite/gcc.target/i386/avx-vzeroupper-16.c b/gcc/testsuite/gcc.target/i386/avx-vzeroupper-16.c index 095640a5b9c..bc6e0d23c7d 100644 --- a/gcc/testsuite/gcc.target/i386/avx-vzeroupper-16.c +++ b/gcc/testsuite/gcc.target/i386/avx-vzeroupper-16.c @@ -1,4 +1,4 @@ -/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-do compile { target lp64 } } */ /* { dg-options "-O2 -mavx -mabi=ms -mtune=generic -dp" } */ typedef float __m256 __attribute__ ((__vector_size__ (32), __may_alias__)); diff --git a/gcc/testsuite/gcc.target/i386/avx-vzeroupper-17.c b/gcc/testsuite/gcc.target/i386/avx-vzeroupper-17.c index ef293b3d633..5d3aa48397c 100644 --- a/gcc/testsuite/gcc.target/i386/avx-vzeroupper-17.c +++ b/gcc/testsuite/gcc.target/i386/avx-vzeroupper-17.c @@ -1,4 +1,4 @@ -/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-do compile { target lp64 } } */ /* { dg-options "-O2 -mavx -mabi=ms -mtune=generic -dp" } */ typedef float __m256 __attribute__ ((__vector_size__ (32), __may_alias__)); diff --git a/gcc/testsuite/gcc.target/i386/avx-vzeroupper-18.c b/gcc/testsuite/gcc.target/i386/avx-vzeroupper-18.c index 046b7ef1f8e..06307525d46 100644 --- a/gcc/testsuite/gcc.target/i386/avx-vzeroupper-18.c +++ b/gcc/testsuite/gcc.target/i386/avx-vzeroupper-18.c @@ -1,4 +1,4 @@ -/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-do compile { target lp64 } } */ /* { dg-options "-O0 -mavx -mabi=ms -mtune=generic -dp" } */ typedef float __m256 __attribute__ ((__vector_size__ (32), __may_alias__)); diff --git a/gcc/testsuite/gcc.target/i386/pr43662.c b/gcc/testsuite/gcc.target/i386/pr43662.c index 5e75dc54190..2896a1a52c3 100644 --- a/gcc/testsuite/gcc.target/i386/pr43662.c +++ b/gcc/testsuite/gcc.target/i386/pr43662.c @@ -1,4 +1,4 @@ -/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-do compile { target lp64 } } */ /* { dg-options "-O2" } */ void __attribute__ ((ms_abi)) foo (void) diff --git a/gcc/testsuite/gcc.target/i386/pr43869.c b/gcc/testsuite/gcc.target/i386/pr43869.c index 5513b19f50e..4157db1d168 100644 --- a/gcc/testsuite/gcc.target/i386/pr43869.c +++ b/gcc/testsuite/gcc.target/i386/pr43869.c @@ -1,4 +1,4 @@ -/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-do compile { target lp64 } } */ int __attribute__((__noinline__)) bugged(float f1, float f2, float f3, float f4, diff --git a/gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp b/gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp index b0cba178fa2..e76d0c10150 100644 --- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp +++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp @@ -20,7 +20,7 @@ load_lib gcc-dg.exp if { (![istarget x86_64-*-*] && ![istarget i?86-*-*]) - || [is-effective-target ia32] } then { + || [is-effective-target ilp32] } then { return } -- 2.30.2