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

Reply via email to