aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>2012-10-16 01:39:16 +0159
committerBernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>2012-10-16 01:39:16 +0159
commit891a878343212896acaff4b45ba831622509bcdf (patch)
treed7eda8855e08aa8e3d22286cc87f665a623c2154
parentee2ec6d2e2197bcd87b135f48ae82c209a83da9a (diff)
downloadgcc-aarch64-891a878343212896acaff4b45ba831622509bcdf.tar.gz
Sync with svn rev. 192450
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>
-rw-r--r--gcc/ChangeLog.aarch647
-rw-r--r--gcc/config/aarch64/aarch64.h34
-rw-r--r--gcc/testsuite/ChangeLog.aarch6410
-rw-r--r--gcc/testsuite/gcc.target/aarch64/predefine_large.c7
-rw-r--r--gcc/testsuite/gcc.target/aarch64/predefine_small.c7
-rw-r--r--gcc/testsuite/gcc.target/aarch64/predefine_tiny.c7
-rw-r--r--gcc/testsuite/lib/target-supports.exp42
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
+ }
+}