forked from OSchip/llvm-project
ARM: fix mismatch between Clang and backend on exception type.
"-arch armv7k" is only normally used with a watchos target, but Clang doesn't stop you from giving a "-miphoneos-version-min" option too, converting the triple to "thumbv7k-apple-ios". In this case the backend will decide to use SjLj exceptions, so Clang needs to agree so it can create the correct predefines. Fortunately, there's a handy function to make the decision for us now. llvm-svn: 253355
This commit is contained in:
parent
3ac8a5abbf
commit
c741b04d1e
|
@ -1053,12 +1053,8 @@ bool Darwin::UseSjLjExceptions(const ArgList &Args) const {
|
|||
getTriple().getArch() != llvm::Triple::thumb)
|
||||
return false;
|
||||
|
||||
// We can't check directly for watchOS here. ComputeLLVMTriple only
|
||||
// fills in the ArchName correctly.
|
||||
llvm::Triple Triple(ComputeLLVMTriple(Args));
|
||||
return !(Triple.getArchName() == "armv7k" ||
|
||||
Triple.getArchName() == "thumbv7k");
|
||||
|
||||
// Only watchOS uses the new DWARF/Compact unwinding method.
|
||||
return !isTargetWatchOS();
|
||||
}
|
||||
|
||||
bool MachO::isPICDefault() const { return true; }
|
||||
|
|
|
@ -1,5 +1,13 @@
|
|||
// Tests that make sure armv7k is mapped to the correct CPU
|
||||
// Tests that make sure armv7k is mapped to the correct CPU and ABI choices
|
||||
|
||||
// RUN: %clang -target x86_64-apple-macosx10.9 -arch armv7k -c %s -### 2>&1 | FileCheck %s
|
||||
// CHECK: "-cc1"{{.*}} "-target-cpu" "cortex-a7"
|
||||
// CHECK-NOT: "-fsjlj-exceptions"
|
||||
|
||||
// "thumbv7k-apple-ios" is a bit of a weird triple, but since the backend is
|
||||
// going to choose to use sjlj-based exceptions for it, the front-end needs to
|
||||
// match.
|
||||
|
||||
// RUN: %clang -target x86_64-apple-macosx10.9 -arch armv7k -miphoneos-version-min=9.0 -c %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SJLJ
|
||||
// CHECK-SJLJ: "-cc1"{{.*}} "-target-cpu" "cortex-a7"
|
||||
// CHECK-SJLJ: "-fsjlj-exceptions"
|
||||
|
|
Loading…
Reference in New Issue