Hi srhines,
The patch causes the workaround for A53 erratum (835769) to be enabled by
default for all AArch64 Android targets, the can still be overridden using the
previously added -mno-fix-cortex-a53-835769 option.
http://reviews.llvm.org/D5825
Files:
lib/Driver/Tools.cpp
test/CodeGen/aarch64-fix-cortex-a53-835769.c
test/Driver/aarch64-fix-cortex-a53-835769-cg.c
test/Driver/aarch64-fix-cortex-a53-835769.c
Index: lib/Driver/Tools.cpp
===================================================================
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -920,6 +920,10 @@
CmdArgs.push_back("-aarch64-fix-cortex-a53-835769=1");
else
CmdArgs.push_back("-aarch64-fix-cortex-a53-835769=0");
+ } else if (Triple.getEnvironment() == llvm::Triple::Android) {
+ // Enabled A53 errata (835769) workaround by default on android
+ CmdArgs.push_back("-backend-option");
+ CmdArgs.push_back("-aarch64-fix-cortex-a53-835769=1");
}
// Setting -mno-global-merge disables the codegen global merge pass. Setting
Index: test/CodeGen/aarch64-fix-cortex-a53-835769.c
===================================================================
--- /dev/null
+++ test/CodeGen/aarch64-fix-cortex-a53-835769.c
@@ -0,0 +1,27 @@
+// REQUIRES: aarch64-registered-target
+
+// RUN: %clang -O3 -target aarch64-linux-eabi %s -S -o- \
+// RUN: | FileCheck --check-prefix=CHECK-NO --check-prefix=CHECK %s
+// RUN: %clang -O3 -target aarch64-linux-eabi -mfix-cortex-a53-835769 %s -S -o- 2>&1 \
+// RUN: | FileCheck --check-prefix=CHECK-YES --check-prefix=CHECK %s
+// RUN: %clang -O3 -target aarch64-linux-eabi -mno-fix-cortex-a53-835769 %s -S -o- 2>&1 \
+// RUN: | FileCheck --check-prefix=CHECK-NO --check-prefix=CHECK %s
+
+// RUN: %clang -O3 -target aarch64-android-eabi %s -S -o- \
+// RUN: | FileCheck --check-prefix=CHECK-YES --check-prefix=CHECK %s
+// RUN: %clang -O3 -target aarch64-android-eabi -mfix-cortex-a53-835769 %s -S -o- \
+// RUN: | FileCheck --check-prefix=CHECK-YES --check-prefix=CHECK %s
+// RUN: %clang -O3 -target aarch64-android-eabi -mno-fix-cortex-a53-835769 %s -S -o- \
+// RUN: | FileCheck --check-prefix=CHECK-NO --check-prefix=CHECK %s
+
+typedef long int64_t;
+
+int64_t f_load_madd_64(int64_t a, int64_t b, int64_t *c) {
+ int64_t result = a+b*(*c);
+ return result;
+}
+
+// CHECK: ldr
+// CHECK-YES-NEXT: nop
+// CHECK-NO-NEXT-NOT: nop
+// CHECK-NEXT: madd
Index: test/Driver/aarch64-fix-cortex-a53-835769-cg.c
===================================================================
--- test/Driver/aarch64-fix-cortex-a53-835769-cg.c
+++ /dev/null
@@ -1,19 +0,0 @@
-// REQUIRES: aarch64-registered-target
-// RUN: %clang -O3 -target aarch64-linux-eabi %s -S -o- \
-// RUN: | FileCheck --check-prefix=CHECK-NO --check-prefix=CHECK %s
-// RUN: %clang -O3 -target aarch64-linux-eabi -mfix-cortex-a53-835769 %s -S -o- 2>&1 \
-// RUN: | FileCheck --check-prefix=CHECK-YES --check-prefix=CHECK %s
-// RUN: %clang -O3 -target aarch64-linux-eabi -mno-fix-cortex-a53-835769 %s -S -o- 2>&1 \
-// RUN: | FileCheck --check-prefix=CHECK-NO --check-prefix=CHECK %s
-
-typedef long int64_t;
-
-int64_t f_load_madd_64(int64_t a, int64_t b, int64_t *c) {
- int64_t result = a+b*(*c);
- return result;
-}
-
-// CHECK: ldr
-// CHECK-YES-NEXT: nop
-// CHECK-NO-NEXT-NOT: nop
-// CHECK-NEXT: madd
Index: test/Driver/aarch64-fix-cortex-a53-835769.c
===================================================================
--- test/Driver/aarch64-fix-cortex-a53-835769.c
+++ test/Driver/aarch64-fix-cortex-a53-835769.c
@@ -4,6 +4,10 @@
// RUN: | FileCheck --check-prefix=CHECK-YES %s
// RUN: %clang -target aarch64-linux-eabi -mno-fix-cortex-a53-835769 %s -### 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-NO %s
+
+// RUN: %clang -target aarch64-android-eabi %s -### 2>&1 \
+// RUN: | FileCheck --check-prefix=CHECK-YES %s
+
// CHECK-DEF-NOT: "-backend-option" "-aarch64-fix-cortex-a53-835769"
// CHECK-YES: "-backend-option" "-aarch64-fix-cortex-a53-835769=1"
// CHECK-NO: "-backend-option" "-aarch64-fix-cortex-a53-835769=0"
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits