diff options
author | Andrew Trick <atrick@apple.com> | 2011-03-23 19:43:59 +0000 |
---|---|---|
committer | Andrew Trick <atrick@apple.com> | 2011-03-23 19:43:59 +0000 |
commit | 4a3ee93447d01284425b5fd9c11234586068a6d8 (patch) | |
tree | 62fd82b2bd79e033f75f79834f0b6e1f8e0c405b /clang/lib | |
parent | f1a38cf32dc010ab3cf2d23aeb3d50c9a8944dc8 (diff) | |
download | bcm5719-llvm-4a3ee93447d01284425b5fd9c11234586068a6d8.tar.gz bcm5719-llvm-4a3ee93447d01284425b5fd9c11234586068a6d8.zip |
Revert r128156 because of CodeGenObjC/messages.m and Coverage/codegen-gnu.m.
llvm-svn: 128157
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/CodeGen/CGObjCGNU.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/clang/lib/CodeGen/CGObjCGNU.cpp b/clang/lib/CodeGen/CGObjCGNU.cpp index 99132d6967c..dc91ec764ca 100644 --- a/clang/lib/CodeGen/CGObjCGNU.cpp +++ b/clang/lib/CodeGen/CGObjCGNU.cpp @@ -521,12 +521,9 @@ llvm::Value *CGObjCGNU::GetSelector(CGBuilderTy &Builder, Selector Sel, Types.push_back(TypedSelector(TypeEncoding, SelValue)); } - if (lval) { - llvm::Value *tmp = Builder.CreateAlloca(SelValue->getType()); - Builder.CreateStore(SelValue, tmp); - return tmp; - } - return SelValue; + if (lval) + return SelValue; + return Builder.CreateLoad(SelValue); } llvm::Value *CGObjCGNU::GetSelector(CGBuilderTy &Builder, Selector Sel, @@ -1909,12 +1906,16 @@ llvm::Function *CGObjCGNU::ModuleInitFunction() { llvm::Constant *Idxs[] = {Zeros[0], llvm::ConstantInt::get(llvm::Type::getInt32Ty(VMContext), i), Zeros[0]}; // FIXME: We're generating redundant loads and stores here! - llvm::Constant *SelPtr = llvm::ConstantExpr::getGetElementPtr(SelectorList, - Idxs, 2); + llvm::Constant *SelPtr = new llvm::GlobalVariable(TheModule, SelStructPtrTy, + true, llvm::GlobalValue::InternalLinkage, + llvm::ConstantExpr::getGetElementPtr(SelectorList, Idxs, 2), + ".objc_sel_ptr"); // If selectors are defined as an opaque type, cast the pointer to this // type. - SelPtr = llvm::ConstantExpr::getBitCast(SelPtr, + if (isSelOpaque) { + SelPtr = llvm::ConstantExpr::getBitCast(SelPtr, llvm::PointerType::getUnqual(SelectorTy)); + } SelectorAliases[i]->replaceAllUsesWith(SelPtr); SelectorAliases[i]->eraseFromParent(); } |