patch-r262535-clang-r202177-sparc.diff revision 269012
1Pull in r202177 from upstream clang trunk (by Roman Divacky): 2 3 Give sparcv9 the ability to set the target cpu. Change it from accepting 4 -march which doesnt exist on sparc gcc to -mcpu. While here adjust a 5 few tests to not write an unused temporary file. 6 7Introduced here: http://svnweb.freebsd.org/changeset/base/262535 8 9Index: tools/clang/lib/Basic/Targets.cpp 10=================================================================== 11--- tools/clang/lib/Basic/Targets.cpp 12+++ tools/clang/lib/Basic/Targets.cpp 13@@ -4552,6 +4552,22 @@ class SparcV9TargetInfo : public SparcTargetInfo { 14 Builder.defineMacro("__sparcv9__"); 15 } 16 } 17+ 18+ virtual bool setCPU(const std::string &Name) { 19+ bool CPUKnown = llvm::StringSwitch<bool>(Name) 20+ .Case("v9", true) 21+ .Case("ultrasparc", true) 22+ .Case("ultrasparc3", true) 23+ .Case("niagara", true) 24+ .Case("niagara2", true) 25+ .Case("niagara3", true) 26+ .Case("niagara4", true) 27+ .Default(false); 28+ 29+ // No need to store the CPU yet. There aren't any CPU-specific 30+ // macros to define. 31+ return CPUKnown; 32+ } 33 }; 34 35 } // end anonymous namespace. 36Index: tools/clang/lib/Driver/Tools.cpp 37=================================================================== 38--- tools/clang/lib/Driver/Tools.cpp 39+++ tools/clang/lib/Driver/Tools.cpp 40@@ -1373,7 +1373,8 @@ static std::string getCPUName(const ArgList &Args, 41 } 42 43 case llvm::Triple::sparc: 44- if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) 45+ case llvm::Triple::sparcv9: 46+ if (const Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) 47 return A->getValue(); 48 return ""; 49 50Index: tools/clang/test/Driver/freebsd.c 51=================================================================== 52--- tools/clang/test/Driver/freebsd.c 53+++ tools/clang/test/Driver/freebsd.c 54@@ -59,13 +59,13 @@ 55 // CHECK-MIPSEL: "{{[^" ]*}}ld{{[^" ]*}}" 56 // CHECK-MIPSEL: "-dynamic-linker" "{{.*}}/libexec/ld-elf.so.1" 57 // CHECK-MIPSEL-NOT: "--hash-style={{gnu|both}}" 58-// RUN: %clang %s -### -o %t.o 2>&1 \ 59+// RUN: %clang %s -### 2>&1 \ 60 // RUN: -target mips64-unknown-freebsd10.0 \ 61 // RUN: | FileCheck --check-prefix=CHECK-MIPS64 %s 62 // CHECK-MIPS64: "{{[^" ]*}}ld{{[^" ]*}}" 63 // CHECK-MIPS64: "-dynamic-linker" "{{.*}}/libexec/ld-elf.so.1" 64 // CHECK-MIPS64-NOT: "--hash-style={{gnu|both}}" 65-// RUN: %clang %s -### -o %t.o 2>&1 \ 66+// RUN: %clang %s -### 2>&1 \ 67 // RUN: -target mips64el-unknown-freebsd10.0 \ 68 // RUN: | FileCheck --check-prefix=CHECK-MIPS64EL %s 69 // CHECK-MIPS64EL: "{{[^" ]*}}ld{{[^" ]*}}" 70@@ -97,12 +97,12 @@ 71 // CHECK-NORMAL: crt1.o 72 // CHECK-NORMAL: crtbegin.o 73 74-// RUN: %clang %s -### -o %t.o -target arm-unknown-freebsd10.0 2>&1 \ 75+// RUN: %clang %s -### -target arm-unknown-freebsd10.0 2>&1 \ 76 // RUN: | FileCheck --check-prefix=CHECK-ARM %s 77 // CHECK-ARM: clang{{.*}}" "-cc1"{{.*}}" "-fsjlj-exceptions" 78 // CHECK-ARM: as{{.*}}" "-mfpu=softvfp"{{.*}}"-matpcs" 79 80-// RUN: %clang %s -### -o %t.o -target arm-gnueabi-freebsd10.0 2>&1 \ 81+// RUN: %clang %s -### -target arm-gnueabi-freebsd10.0 2>&1 \ 82 // RUN: | FileCheck --check-prefix=CHECK-ARM-EABI %s 83 // CHECK-ARM-EABI-NOT: clang{{.*}}" "-cc1"{{.*}}" "-fsjlj-exceptions" 84 // CHECK-ARM-EABI: as{{.*}}" "-mfpu=softvfp" "-meabi=5" 85