2014-03-18 22:07:45 +00:00
|
|
|
Pull in r202177 from upstream clang trunk (by Roman Divacky):
|
|
|
|
|
|
|
|
Give sparcv9 the ability to set the target cpu. Change it from accepting
|
|
|
|
-march which doesnt exist on sparc gcc to -mcpu. While here adjust a
|
|
|
|
few tests to not write an unused temporary file.
|
|
|
|
|
2014-05-24 22:27:31 +00:00
|
|
|
Introduced here: http://svnweb.freebsd.org/changeset/base/262535
|
2014-03-18 22:07:45 +00:00
|
|
|
|
|
|
|
Index: tools/clang/lib/Basic/Targets.cpp
|
|
|
|
===================================================================
|
|
|
|
--- tools/clang/lib/Basic/Targets.cpp
|
|
|
|
+++ tools/clang/lib/Basic/Targets.cpp
|
|
|
|
@@ -4552,6 +4552,22 @@ class SparcV9TargetInfo : public SparcTargetInfo {
|
|
|
|
Builder.defineMacro("__sparcv9__");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
+
|
|
|
|
+ virtual bool setCPU(const std::string &Name) {
|
|
|
|
+ bool CPUKnown = llvm::StringSwitch<bool>(Name)
|
|
|
|
+ .Case("v9", true)
|
|
|
|
+ .Case("ultrasparc", true)
|
|
|
|
+ .Case("ultrasparc3", true)
|
|
|
|
+ .Case("niagara", true)
|
|
|
|
+ .Case("niagara2", true)
|
|
|
|
+ .Case("niagara3", true)
|
|
|
|
+ .Case("niagara4", true)
|
|
|
|
+ .Default(false);
|
|
|
|
+
|
|
|
|
+ // No need to store the CPU yet. There aren't any CPU-specific
|
|
|
|
+ // macros to define.
|
|
|
|
+ return CPUKnown;
|
|
|
|
+ }
|
|
|
|
};
|
|
|
|
|
|
|
|
} // end anonymous namespace.
|
|
|
|
Index: tools/clang/lib/Driver/Tools.cpp
|
|
|
|
===================================================================
|
|
|
|
--- tools/clang/lib/Driver/Tools.cpp
|
|
|
|
+++ tools/clang/lib/Driver/Tools.cpp
|
|
|
|
@@ -1373,7 +1373,8 @@ static std::string getCPUName(const ArgList &Args,
|
|
|
|
}
|
|
|
|
|
|
|
|
case llvm::Triple::sparc:
|
|
|
|
- if (const Arg *A = Args.getLastArg(options::OPT_march_EQ))
|
|
|
|
+ case llvm::Triple::sparcv9:
|
|
|
|
+ if (const Arg *A = Args.getLastArg(options::OPT_mcpu_EQ))
|
|
|
|
return A->getValue();
|
|
|
|
return "";
|
|
|
|
|
|
|
|
Index: tools/clang/test/Driver/freebsd.c
|
|
|
|
===================================================================
|
|
|
|
--- tools/clang/test/Driver/freebsd.c
|
|
|
|
+++ tools/clang/test/Driver/freebsd.c
|
|
|
|
@@ -59,13 +59,13 @@
|
|
|
|
// CHECK-MIPSEL: "{{[^" ]*}}ld{{[^" ]*}}"
|
|
|
|
// CHECK-MIPSEL: "-dynamic-linker" "{{.*}}/libexec/ld-elf.so.1"
|
|
|
|
// CHECK-MIPSEL-NOT: "--hash-style={{gnu|both}}"
|
|
|
|
-// RUN: %clang %s -### -o %t.o 2>&1 \
|
|
|
|
+// RUN: %clang %s -### 2>&1 \
|
|
|
|
// RUN: -target mips64-unknown-freebsd10.0 \
|
|
|
|
// RUN: | FileCheck --check-prefix=CHECK-MIPS64 %s
|
|
|
|
// CHECK-MIPS64: "{{[^" ]*}}ld{{[^" ]*}}"
|
|
|
|
// CHECK-MIPS64: "-dynamic-linker" "{{.*}}/libexec/ld-elf.so.1"
|
|
|
|
// CHECK-MIPS64-NOT: "--hash-style={{gnu|both}}"
|
|
|
|
-// RUN: %clang %s -### -o %t.o 2>&1 \
|
|
|
|
+// RUN: %clang %s -### 2>&1 \
|
|
|
|
// RUN: -target mips64el-unknown-freebsd10.0 \
|
|
|
|
// RUN: | FileCheck --check-prefix=CHECK-MIPS64EL %s
|
|
|
|
// CHECK-MIPS64EL: "{{[^" ]*}}ld{{[^" ]*}}"
|
|
|
|
@@ -97,12 +97,12 @@
|
|
|
|
// CHECK-NORMAL: crt1.o
|
|
|
|
// CHECK-NORMAL: crtbegin.o
|
|
|
|
|
|
|
|
-// RUN: %clang %s -### -o %t.o -target arm-unknown-freebsd10.0 2>&1 \
|
|
|
|
+// RUN: %clang %s -### -target arm-unknown-freebsd10.0 2>&1 \
|
|
|
|
// RUN: | FileCheck --check-prefix=CHECK-ARM %s
|
|
|
|
// CHECK-ARM: clang{{.*}}" "-cc1"{{.*}}" "-fsjlj-exceptions"
|
|
|
|
// CHECK-ARM: as{{.*}}" "-mfpu=softvfp"{{.*}}"-matpcs"
|
|
|
|
|
|
|
|
-// RUN: %clang %s -### -o %t.o -target arm-gnueabi-freebsd10.0 2>&1 \
|
|
|
|
+// RUN: %clang %s -### -target arm-gnueabi-freebsd10.0 2>&1 \
|
|
|
|
// RUN: | FileCheck --check-prefix=CHECK-ARM-EABI %s
|
|
|
|
// CHECK-ARM-EABI-NOT: clang{{.*}}" "-cc1"{{.*}}" "-fsjlj-exceptions"
|
|
|
|
// CHECK-ARM-EABI: as{{.*}}" "-mfpu=softvfp" "-meabi=5"
|