]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/llvm/patches/patch-r262535-clang-r202177-sparc.diff
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / llvm / patches / patch-r262535-clang-r202177-sparc.diff
1 Pull 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
7 Introduced here: http://svnweb.freebsd.org/changeset/base/262535
8
9 Index: 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.
36 Index: 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  
50 Index: 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"