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. Introduced here: http://svnweb.freebsd.org/changeset/base/262535 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(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"