forked from OSchip/llvm-project
parent
3297ed7065
commit
84bb33add9
|
|
@ -1840,9 +1840,10 @@ void SROA::RewriteForScalarRepl(Instruction *I, AllocaInst *AI, uint64_t Offset,
|
|||
// %insert = insertvalue { i32, i32 } %insert.0, i32 %load.1, 1
|
||||
// (Also works for arrays instead of structs)
|
||||
Value *Insert = UndefValue::get(LIType);
|
||||
IRBuilder<> Builder(LI);
|
||||
for (unsigned i = 0, e = NewElts.size(); i != e; ++i) {
|
||||
Value *Load = new LoadInst(NewElts[i], "load", LI);
|
||||
Insert = InsertValueInst::Create(Insert, Load, i, "insert", LI);
|
||||
Value *Load = Builder.CreateLoad(NewElts[i], "load");
|
||||
Insert = Builder.CreateInsertValue(Insert, Load, i, "insert");
|
||||
}
|
||||
LI->replaceAllUsesWith(Insert);
|
||||
DeadInsts.push_back(LI);
|
||||
|
|
@ -1867,9 +1868,10 @@ void SROA::RewriteForScalarRepl(Instruction *I, AllocaInst *AI, uint64_t Offset,
|
|||
// %val.1 = extractvalue { i32, i32 } %val, 1
|
||||
// store i32 %val.1, i32* %alloc.1
|
||||
// (Also works for arrays instead of structs)
|
||||
IRBuilder<> Builder(SI);
|
||||
for (unsigned i = 0, e = NewElts.size(); i != e; ++i) {
|
||||
Value *Extract = ExtractValueInst::Create(Val, i, Val->getName(), SI);
|
||||
new StoreInst(Extract, NewElts[i], SI);
|
||||
Value *Extract = Builder.CreateExtractValue(Val, i, Val->getName());
|
||||
Builder.CreateStore(Extract, NewElts[i]);
|
||||
}
|
||||
DeadInsts.push_back(SI);
|
||||
} else if (SIType->isIntegerTy() &&
|
||||
|
|
|
|||
Loading…
Reference in New Issue