forked from OSchip/llvm-project
Use the actual class visibility for the ObjC EHTYPE global,
not the global visibility mode. Noticed by inspection. llvm-svn: 175479
This commit is contained in:
parent
eac4a48d23
commit
a496098bb8
|
@ -7054,7 +7054,7 @@ CGObjCNonFragileABIMac::GetInterfaceEHType(const ObjCInterfaceDecl *ID,
|
|||
ID->getIdentifier()->getName()));
|
||||
}
|
||||
|
||||
if (CGM.getLangOpts().getVisibilityMode() == HiddenVisibility)
|
||||
if (ID->getVisibility() == HiddenVisibility)
|
||||
Entry->setVisibility(llvm::GlobalValue::HiddenVisibility);
|
||||
Entry->setAlignment(CGM.getDataLayout().getABITypeAlignment(
|
||||
ObjCTypes.EHTypeTy));
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fexceptions -fobjc-exceptions -o - %s | FileCheck %s
|
||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fexceptions -fobjc-exceptions -fvisibility hidden -o - %s | FileCheck -check-prefix=CHECK-HIDDEN %s
|
||||
|
||||
__attribute__((objc_root_class))
|
||||
@interface Root {
|
||||
Class isa;
|
||||
}
|
||||
@end
|
||||
|
||||
__attribute__((objc_exception))
|
||||
@interface A : Root
|
||||
@end
|
||||
|
||||
@implementation A
|
||||
@end
|
||||
// CHECK: @"OBJC_EHTYPE_$_A" = global {{%.*}} { i8** getelementptr (i8** @objc_ehtype_vtable, i32 2)
|
||||
// CHECK-HIDDEN: @"OBJC_EHTYPE_$_A" = hidden global {{%.*}} { i8** getelementptr (i8** @objc_ehtype_vtable, i32 2)
|
||||
|
||||
__attribute__((objc_exception))
|
||||
__attribute__((visibility("default")))
|
||||
@interface B : Root
|
||||
@end
|
||||
|
||||
@implementation B
|
||||
@end
|
||||
// CHECK: @"OBJC_EHTYPE_$_B" = global {{%.*}} { i8** getelementptr (i8** @objc_ehtype_vtable, i32 2)
|
||||
// CHECK-HIDDEN: @"OBJC_EHTYPE_$_B" = global {{%.*}} { i8** getelementptr (i8** @objc_ehtype_vtable, i32 2)
|
Loading…
Reference in New Issue