forked from OSchip/llvm-project
Driver/Darwin: Fix Objective-C non-fragile ABI and dispatch method defaults, which were wrong in numerous places.
- <rdar://problem/7903449> llvm-svn: 102257
This commit is contained in:
parent
53ce178cef
commit
df3d1c2d1f
|
@ -160,19 +160,20 @@ public:
|
|||
return !isMacosxVersionLT(10, 6);
|
||||
}
|
||||
virtual bool IsObjCNonFragileABIDefault() const {
|
||||
// Non-fragile ABI default to on for iPhoneOS and x86-64.
|
||||
return isTargetIPhoneOS() || getTriple().getArch() == llvm::Triple::x86_64;
|
||||
// Non-fragile ABI is default for everything but i386.
|
||||
return getTriple().getArch() != llvm::Triple::x86;
|
||||
}
|
||||
virtual bool IsObjCLegacyDispatchDefault() const {
|
||||
// This is only used with the non-fragile ABI.
|
||||
return (getTriple().getArch() == llvm::Triple::arm ||
|
||||
getTriple().getArch() == llvm::Triple::thumb);
|
||||
|
||||
// Legacy dispatch is used everywhere except on x86_64.
|
||||
return getTriple().getArch() != llvm::Triple::x86_64;
|
||||
}
|
||||
virtual bool UseObjCMixedDispatch() const {
|
||||
// Mixed dispatch is only used on x86_64 for 10.6 and later.
|
||||
return (!isTargetIPhoneOS() &&
|
||||
getTriple().getArch() == llvm::Triple::x86_64 &&
|
||||
!isMacosxVersionLT(10, 6));
|
||||
// This is only used with the non-fragile ABI and non-legacy dispatch.
|
||||
|
||||
// Mixed dispatch is used everywhere except OS X before 10.6.
|
||||
return !(!isTargetIPhoneOS() && isMacosxVersionLT(10, 6));
|
||||
}
|
||||
virtual bool IsUnwindTablesDefault() const;
|
||||
virtual unsigned GetDefaultStackProtectorLevel() const {
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
// Check non-fragile ABI and dispatch method defaults.
|
||||
|
||||
// i386
|
||||
|
||||
// RUN: %clang -ccc-host-triple x86_64-apple-darwin10 -S -### %s \
|
||||
// RUN: -arch i386 -mmacosx-version-min=10.5 2> %t
|
||||
// RUN: FileCheck --check-prefix CHECK-I386_OSX10_5 < %t %s
|
||||
|
||||
// CHECK-CHECK-I386_OSX10_5: "-cc1"
|
||||
// CHECK-CHECK-I386_OSX10_5-NOT: -fobjc-nonfragile-abi
|
||||
// CHECK-CHECK-I386_OSX10_5-NOT: -fobjc-dispatch-method
|
||||
// CHECK-CHECK-I386_OSX10_5: darwin-objc-defaults
|
||||
|
||||
// RUN: %clang -ccc-host-triple x86_64-apple-darwin10 -S -### %s \
|
||||
// RUN: -arch i386 -mmacosx-version-min=10.6 2> %t
|
||||
// RUN: FileCheck --check-prefix CHECK-I386_OSX10_6 < %t %s
|
||||
|
||||
// CHECK-CHECK-I386_OSX10_6: "-cc1"
|
||||
// CHECK-CHECK-I386_OSX10_6-NOT: -fobjc-nonfragile-abi
|
||||
// CHECK-CHECK-I386_OSX10_6-NOT: -fobjc-dispatch-method
|
||||
// CHECK-CHECK-I386_OSX10_6: darwin-objc-defaults
|
||||
|
||||
// RUN: %clang -ccc-host-triple x86_64-apple-darwin10 -S -### %s \
|
||||
// RUN: -arch i386 -miphoneos-version-min=3.0 2> %t
|
||||
// RUN: FileCheck --check-prefix CHECK-I386_IPHONE3_0 < %t %s
|
||||
|
||||
// CHECK-CHECK-I386_IPHONE3_0: "-cc1"
|
||||
// CHECK-CHECK-I386_IPHONE3_0-NOT: -fobjc-nonfragile-abi
|
||||
// CHECK-CHECK-I386_IPHONE3_0-NOT: -fobjc-dispatch-method
|
||||
// CHECK-CHECK-I386_IPHONE3_0: darwin-objc-defaults
|
||||
|
||||
// x86_64
|
||||
|
||||
// RUN: %clang -ccc-host-triple x86_64-apple-darwin10 -S -### %s \
|
||||
// RUN: -arch x86_64 -mmacosx-version-min=10.5 2> %t
|
||||
// RUN: FileCheck --check-prefix CHECK-X86_64_OSX10_5 < %t %s
|
||||
|
||||
// CHECK-CHECK-X86_64_OSX10_5: "-cc1"
|
||||
// CHECK-CHECK-X86_64_OSX10_5: -fobjc-nonfragile-abi
|
||||
// CHECK-CHECK-X86_64_OSX10_5: -fobjc-dispatch-method=non-legacy
|
||||
// CHECK-CHECK-X86_64_OSX10_5: darwin-objc-defaults
|
||||
|
||||
// RUN: %clang -ccc-host-triple x86_64-apple-darwin10 -S -### %s \
|
||||
// RUN: -arch x86_64 -mmacosx-version-min=10.6 2> %t
|
||||
// RUN: FileCheck --check-prefix CHECK-X86_64_OSX10_6 < %t %s
|
||||
|
||||
// CHECK-CHECK-X86_64_OSX10_6: "-cc1"
|
||||
// CHECK-CHECK-X86_64_OSX10_6: -fobjc-nonfragile-abi
|
||||
// CHECK-CHECK-X86_64_OSX10_6: -fobjc-dispatch-method=mixed
|
||||
// CHECK-CHECK-X86_64_OSX10_6: darwin-objc-defaults
|
||||
|
||||
// RUN: %clang -ccc-host-triple x86_64-apple-darwin10 -S -### %s \
|
||||
// RUN: -arch x86_64 -miphoneos-version-min=3.0 2> %t
|
||||
// RUN: FileCheck --check-prefix CHECK-X86_64_IPHONE3_0 < %t %s
|
||||
|
||||
// CHECK-CHECK-X86_64_IPHONE3_0: "-cc1"
|
||||
// CHECK-CHECK-X86_64_IPHONE3_0: -fobjc-nonfragile-abi
|
||||
// CHECK-CHECK-X86_64_IPHONE3_0: -fobjc-dispatch-method=mixed
|
||||
// CHECK-CHECK-X86_64_IPHONE3_0: darwin-objc-defaults
|
||||
|
||||
// armv7
|
||||
|
||||
// RUN: %clang -ccc-host-triple x86_64-apple-darwin10 -S -### %s \
|
||||
// RUN: -arch armv7 -mmacosx-version-min=10.5 2> %t
|
||||
// RUN: FileCheck --check-prefix CHECK-ARMV7_OSX10_5 < %t %s
|
||||
|
||||
// CHECK-CHECK-ARMV7_OSX10_5: "-cc1"
|
||||
// CHECK-CHECK-ARMV7_OSX10_5: -fobjc-nonfragile-abi
|
||||
// CHECK-CHECK-ARMV7_OSX10_5-NOT: -fobjc-dispatch-method
|
||||
// CHECK-CHECK-ARMV7_OSX10_5: darwin-objc-defaults
|
||||
|
||||
// RUN: %clang -ccc-host-triple x86_64-apple-darwin10 -S -### %s \
|
||||
// RUN: -arch armv7 -mmacosx-version-min=10.6 2> %t
|
||||
// RUN: FileCheck --check-prefix CHECK-ARMV7_OSX10_6 < %t %s
|
||||
|
||||
// CHECK-CHECK-ARMV7_OSX10_6: "-cc1"
|
||||
// CHECK-CHECK-ARMV7_OSX10_6: -fobjc-nonfragile-abi
|
||||
// CHECK-CHECK-ARMV7_OSX10_6-NOT: -fobjc-dispatch-method
|
||||
// CHECK-CHECK-ARMV7_OSX10_6: darwin-objc-defaults
|
||||
|
||||
// RUN: %clang -ccc-host-triple x86_64-apple-darwin10 -S -### %s \
|
||||
// RUN: -arch armv7 -miphoneos-version-min=3.0 2> %t
|
||||
// RUN: FileCheck --check-prefix CHECK-ARMV7_IPHONE3_0 < %t %s
|
||||
|
||||
// CHECK-CHECK-ARMV7_IPHONE3_0: "-cc1"
|
||||
// CHECK-CHECK-ARMV7_IPHONE3_0: -fobjc-nonfragile-abi
|
||||
// CHECK-CHECK-ARMV7_IPHONE3_0-NOT: -fobjc-dispatch-method
|
||||
// CHECK-CHECK-ARMV7_IPHONE3_0: darwin-objc-defaults
|
Loading…
Reference in New Issue