]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/patches/patch-r263619-clang-r201662-arm-gnueabihf.diff
Add atf m4 files from the vendor branch.
[FreeBSD/FreeBSD.git] / contrib / llvm / patches / patch-r263619-clang-r201662-arm-gnueabihf.diff
1 Index: tools/clang/lib/Driver/ToolChains.cpp
2 ===================================================================
3 --- tools/clang/lib/Driver/ToolChains.cpp
4 +++ tools/clang/lib/Driver/ToolChains.cpp
5 @@ -2034,6 +2034,7 @@
6  bool FreeBSD::UseSjLjExceptions() const {
7    // FreeBSD uses SjLj exceptions on ARM oabi.
8    switch (getTriple().getEnvironment()) {
9 +  case llvm::Triple::GNUEABIHF:
10    case llvm::Triple::GNUEABI:
11    case llvm::Triple::EABI:
12      return false;
13 Index: tools/clang/lib/Driver/Tools.cpp
14 ===================================================================
15 --- tools/clang/lib/Driver/Tools.cpp
16 +++ tools/clang/lib/Driver/Tools.cpp
17 @@ -737,8 +737,15 @@
18      }
19  
20      case llvm::Triple::FreeBSD:
21 -      // FreeBSD defaults to soft float
22 -      FloatABI = "soft";
23 +      switch(Triple.getEnvironment()) {
24 +      case llvm::Triple::GNUEABIHF:
25 +        FloatABI = "hard";
26 +        break;
27 +      default:
28 +        // FreeBSD defaults to soft float
29 +        FloatABI = "soft";
30 +        break;
31 +      }
32        break;
33  
34      default:
35 @@ -5776,8 +5783,18 @@
36      }
37    } else if (getToolChain().getArch() == llvm::Triple::arm ||
38               getToolChain().getArch() == llvm::Triple::thumb) {
39 -    CmdArgs.push_back("-mfpu=softvfp");
40 +    const Driver &D = getToolChain().getDriver();
41 +    llvm::Triple Triple = getToolChain().getTriple();
42 +    StringRef FloatABI = getARMFloatABI(D, Args, Triple);
43 +
44 +    if (FloatABI == "hard") {
45 +      CmdArgs.push_back("-mfpu=vfp");
46 +    } else {
47 +      CmdArgs.push_back("-mfpu=softvfp");
48 +    }
49 +
50      switch(getToolChain().getTriple().getEnvironment()) {
51 +    case llvm::Triple::GNUEABIHF:
52      case llvm::Triple::GNUEABI:
53      case llvm::Triple::EABI:
54        CmdArgs.push_back("-meabi=5");
55 Index: tools/clang/test/Driver/freebsd.c
56 ===================================================================
57 --- tools/clang/test/Driver/freebsd.c
58 +++ tools/clang/test/Driver/freebsd.c
59 @@ -101,13 +101,22 @@
60  // RUN:   | FileCheck --check-prefix=CHECK-ARM %s
61  // CHECK-ARM: clang{{.*}}" "-cc1"{{.*}}" "-fsjlj-exceptions"
62  // CHECK-ARM: as{{.*}}" "-mfpu=softvfp"{{.*}}"-matpcs"
63 +// CHECK-ARM-EABI-NOT: as{{.*}}" "-mfpu=vfp"
64  
65  // RUN: %clang %s -### -target arm-gnueabi-freebsd10.0 2>&1 \
66  // RUN:   | FileCheck --check-prefix=CHECK-ARM-EABI %s
67  // CHECK-ARM-EABI-NOT: clang{{.*}}" "-cc1"{{.*}}" "-fsjlj-exceptions"
68  // CHECK-ARM-EABI: as{{.*}}" "-mfpu=softvfp" "-meabi=5"
69 +// CHECK-ARM-EABI-NOT: as{{.*}}" "-mfpu=vfp"
70  // CHECK-ARM-EABI-NOT: as{{.*}}" "-matpcs"
71  
72 +// RUN: %clang %s -### -o %t.o -target arm-gnueabihf-freebsd10.0 -no-integrated-as 2>&1 \
73 +// RUN:   | FileCheck --check-prefix=CHECK-ARM-EABIHF %s
74 +// CHECK-ARM-EABIHF-NOT: clang{{.*}}" "-cc1"{{.*}}" "-fsjlj-exceptions"
75 +// CHECK-ARM-EABIHF: as{{.*}}" "-mfpu=vfp" "-meabi=5"
76 +// CHECK-ARM-EABIHF-NOT: as{{.*}}" "-mfpu=softvfp"
77 +// CHECK-ARM-EABIHF-NOT: as{{.*}}" "-matpcs"
78 +
79  // RUN: %clang -target x86_64-pc-freebsd8 %s -### -flto -o %t.o 2>&1 \
80  // RUN:   | FileCheck --check-prefix=CHECK-LTO %s
81  // CHECK-LTO: ld{{.*}}" "-plugin{{.*}}LLVMgold.so