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