IRgen/Darwin: Fix refacto introduced in Triple changes.

llvm-svn: 130233
This commit is contained in:
Daniel Dunbar 2011-04-26 19:43:00 +00:00
parent a4fa5ce911
commit a59b0a6e3c
2 changed files with 19 additions and 1 deletions

View File

@ -266,7 +266,7 @@ static bool PersonalityHasOnlyCXXUses(llvm::Constant *Fn) {
/// when it really needs it. /// when it really needs it.
void CodeGenModule::SimplifyPersonality() { void CodeGenModule::SimplifyPersonality() {
// For now, this is really a Darwin-specific operation. // For now, this is really a Darwin-specific operation.
if (Context.Target.getTriple().isOSDarwin()) if (!Context.Target.getTriple().isOSDarwin())
return; return;
// If we're not in ObjC++ -fexceptions, there's nothing to do. // If we're not in ObjC++ -fexceptions, there's nothing to do.

View File

@ -0,0 +1,18 @@
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm \
// RUN: -fexceptions -fobjc-exceptions -fobjc-nonfragile-abi \
// RUN: -o %t %s
// RUN: FileCheck < %t %s
//
// <rdar://problem/7471679> [irgen] [eh] Exception code built with clang (x86_64) crashes
// Check that we don't emit unnecessary personality function references.
struct t0_A { t0_A(); };
struct t0_B { t0_A a; };
// CHECK: define {{.*}} @_Z2t0v(){{.*}} {
// CHECK-NOT: objc_personality
// CHECK: }
t0_B& t0() {
static t0_B x;
return x;
}