[cfe-commits] r128156 - /cfe/trunk/lib/CodeGen/CGObjCGNU.cpp

Andrew Trick atrick at apple.com
Wed Mar 23 12:50:09 PDT 2011


I reverted this because it's breaking the build system's sanity tests. Hopefully you or someone else working on cfe can figure out what to do with these test cases.
-Andy

On Mar 23, 2011, at 12:17 PM, Andrew Trick wrote:

> Hi David,
> 
> After your checkin, a couple of tests are hitting this assertion on
> clang-x86_64-darwin10-gcc42-RA:
> 
> Assertion failed: ((i >= FTy->getNumParams() || FTy->getParamType(i) == Params[i]->getType()) && "Calling a function with a bad signature!"), function init, file /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/llvm/lib/VMCore/Instructions.cpp, line 196.
> 
> Failing Tests (2):
>    Clang :: CodeGenObjC/messages.m
>    Clang :: Coverage/codegen-gnu.m
> 
> <Clang -- Coverage___codegen-gnu.m.html><Clang -- CodeGenObjC___messages.m.html>
> 
> -Andy
> 
> On Mar 23, 2011, at 11:39 AM, David Chisnall wrote:
> 
>> Author: theraven
>> Date: Wed Mar 23 13:39:12 2011
>> New Revision: 128156
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=128156&view=rev
>> Log:
>> Remove the redundant loads / stores to globals that we were generating for selectors (GNU runtimes).
>> 
>> 
>> Modified:
>>   cfe/trunk/lib/CodeGen/CGObjCGNU.cpp
>> 
>> Modified: cfe/trunk/lib/CodeGen/CGObjCGNU.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCGNU.cpp?rev=128156&r1=128155&r2=128156&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/CodeGen/CGObjCGNU.cpp (original)
>> +++ cfe/trunk/lib/CodeGen/CGObjCGNU.cpp Wed Mar 23 13:39:12 2011
>> @@ -521,9 +521,12 @@
>>    Types.push_back(TypedSelector(TypeEncoding, SelValue));
>>  }
>> 
>> -  if (lval)
>> -    return SelValue;
>> -  return Builder.CreateLoad(SelValue);
>> +  if (lval) {
>> +    llvm::Value *tmp = Builder.CreateAlloca(SelValue->getType());
>> +    Builder.CreateStore(SelValue, tmp);
>> +    return tmp;
>> +  }
>> +  return SelValue;
>> }
>> 
>> llvm::Value *CGObjCGNU::GetSelector(CGBuilderTy &Builder, Selector Sel,
>> @@ -1906,16 +1909,12 @@
>>    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 = new llvm::GlobalVariable(TheModule, SelStructPtrTy,
>> -      true, llvm::GlobalValue::InternalLinkage,
>> -      llvm::ConstantExpr::getGetElementPtr(SelectorList, Idxs, 2),
>> -      ".objc_sel_ptr");
>> +    llvm::Constant *SelPtr = llvm::ConstantExpr::getGetElementPtr(SelectorList,
>> +        Idxs, 2);
>>    // If selectors are defined as an opaque type, cast the pointer to this
>>    // type.
>> -    if (isSelOpaque) {
>> -      SelPtr = llvm::ConstantExpr::getBitCast(SelPtr,
>> +    SelPtr = llvm::ConstantExpr::getBitCast(SelPtr,
>>        llvm::PointerType::getUnqual(SelectorTy));
>> -    }
>>    SelectorAliases[i]->replaceAllUsesWith(SelPtr);
>>    SelectorAliases[i]->eraseFromParent();
>>  }
>> 
>> 
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits




More information about the cfe-commits mailing list