diff options
author | Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org> | 2012-10-16 01:39:16 +0159 |
---|---|---|
committer | Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org> | 2012-10-16 01:39:16 +0159 |
commit | 891a878343212896acaff4b45ba831622509bcdf (patch) | |
tree | d7eda8855e08aa8e3d22286cc87f665a623c2154 | |
parent | ee2ec6d2e2197bcd87b135f48ae82c209a83da9a (diff) | |
download | gcc-aarch64-891a878343212896acaff4b45ba831622509bcdf.tar.gz |
Sync with svn rev. 192450
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>
-rw-r--r-- | gcc/ChangeLog.aarch64 | 7 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.h | 34 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog.aarch64 | 10 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/aarch64/predefine_large.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/aarch64/predefine_small.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/aarch64/predefine_tiny.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/lib/target-supports.exp | 42 |
7 files changed, 105 insertions, 9 deletions
diff --git a/gcc/ChangeLog.aarch64 b/gcc/ChangeLog.aarch64 index 34bdc16f6..aa64fccc9 100644 --- a/gcc/ChangeLog.aarch64 +++ b/gcc/ChangeLog.aarch64 @@ -1,3 +1,8 @@ +2012-10-15 Chris Schlumberger-Socha <chris.schlumberger-socha@arm.com> + + * config/aarch64/aarch64.h (TARGET_CPU_CPP_BUILTINS): Add predefine for + AArch64 code models. + 2012-10-05 Tejas Belagod <tejas.belagod@arm.com> * config/aarch64/arm_neon.h (vfma_n_f32, vfmaq_n_f32, vfmaq_n_f64): New. @@ -6,7 +11,7 @@ * config/aarch64/arm_neon.h (vqmlalh_lane_s16, vqmlalh_s16, vqmlals_lane_s32, vqmlals_s32, vqmlslh_lane_s16, vqmlslh_s16, - vqmlsls_lane_s32, vqmlsls_s32): Remove old temporary inline asm + vqmlsls_lane_s32, vqmlsls_s32): Remove old temporary inline asm implementations. 2012-10-05 Tejas Belagod <tejas.belagod@arm.com> diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h index a069a4139..3b8b033da 100644 --- a/gcc/config/aarch64/aarch64.h +++ b/gcc/config/aarch64/aarch64.h @@ -23,14 +23,32 @@ #define GCC_AARCH64_H /* Target CPU builtins. */ -#define TARGET_CPU_CPP_BUILTINS() \ - do \ - { \ - builtin_define ("__aarch64__"); \ - if (TARGET_BIG_END) \ - builtin_define ("__AARCH64EB__"); \ - else \ - builtin_define ("__AARCH64EL__"); \ +#define TARGET_CPU_CPP_BUILTINS() \ + do \ + { \ + builtin_define ("__aarch64__"); \ + if (TARGET_BIG_END) \ + builtin_define ("__AARCH64EB__"); \ + else \ + builtin_define ("__AARCH64EL__"); \ + \ + switch (aarch64_cmodel) \ + { \ + case AARCH64_CMODEL_TINY: \ + case AARCH64_CMODEL_TINY_PIC: \ + builtin_define ("__AARCH64_CMODEL_TINY__"); \ + break; \ + case AARCH64_CMODEL_SMALL: \ + case AARCH64_CMODEL_SMALL_PIC: \ + builtin_define ("__AARCH64_CMODEL_SMALL__");\ + break; \ + case AARCH64_CMODEL_LARGE: \ + builtin_define ("__AARCH64_CMODEL_LARGE__"); \ + break; \ + default: \ + break; \ + } \ + \ } while (0) diff --git a/gcc/testsuite/ChangeLog.aarch64 b/gcc/testsuite/ChangeLog.aarch64 index 5b577d5ba..99857507f 100644 --- a/gcc/testsuite/ChangeLog.aarch64 +++ b/gcc/testsuite/ChangeLog.aarch64 @@ -1,3 +1,13 @@ +2012-10-15 Chris Schlumberger-Socha <chris.schlumberger-socha@arm.com> + + * gcc.target/aarch64/predefine_large.c: New test. + * gcc.target/aarch64/predefine_small.c: New test. + * gcc.target/aarch64/predefine_tiny.c: New test. + * lib/target-supports.exp + (check_effective_target_aarch64_tiny): New. + (check_effective_target_aarch64_small): New. + (check_effective_target_aarch64_large): New. + 2012-09-25 Tejas Belagod <tejas.belagod@arm.com> * testsuite/lib/target-supports.exp diff --git a/gcc/testsuite/gcc.target/aarch64/predefine_large.c b/gcc/testsuite/gcc.target/aarch64/predefine_large.c new file mode 100644 index 000000000..0d7d4da47 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/predefine_large.c @@ -0,0 +1,7 @@ +/* { dg-skip-if "Code model already defined" { aarch64_tiny || aarch64_small } } */ + +#ifdef __AARCH64_CMODEL_LARGE__ + int dummy; +#else + #error +#endif diff --git a/gcc/testsuite/gcc.target/aarch64/predefine_small.c b/gcc/testsuite/gcc.target/aarch64/predefine_small.c new file mode 100644 index 000000000..b1362845c --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/predefine_small.c @@ -0,0 +1,7 @@ +/* { dg-skip-if "Code model already defined" { aarch64_tiny || aarch64_large } } */ + +#ifdef __AARCH64_CMODEL_SMALL__ + int dummy; +#else + #error +#endif diff --git a/gcc/testsuite/gcc.target/aarch64/predefine_tiny.c b/gcc/testsuite/gcc.target/aarch64/predefine_tiny.c new file mode 100644 index 000000000..d2c844bac --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/predefine_tiny.c @@ -0,0 +1,7 @@ +/* { dg-skip-if "Code model already defined" { aarch64_small || aarch64_large } } */ + +#ifdef __AARCH64_CMODEL_TINY__ + int dummy; +#else + #error +#endif diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index ca7912bb4..4f4b83984 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -4775,3 +4775,45 @@ proc check_effective_target_ucontext_h { } { #include <ucontext.h> }] } + +proc check_effective_target_aarch64_tiny { } { + if { [istarget aarch64*-*-*] } { + return [check_no_compiler_messages aarch64_tiny object { + #ifdef __AARCH64_CMODEL_TINY__ + int dummy; + #else + #error target not AArch64 tiny code model + #endif + }] + } else { + return 0 + } +} + +proc check_effective_target_aarch64_small { } { + if { [istarget aarch64*-*-*] } { + return [check_no_compiler_messages aarch64_small object { + #ifdef __AARCH64_CMODEL_SMALL__ + int dummy; + #else + #error target not AArch64 small code model + #endif + }] + } else { + return 0 + } +} + +proc check_effective_target_aarch64_large { } { + if { [istarget aarch64*-*-*] } { + return [check_no_compiler_messages aarch64_large object { + #ifdef __AARCH64_CMODEL_LARGE__ + int dummy; + #else + #error target not AArch64 large code model + #endif + }] + } else { + return 0 + } +} |