create a testcase where this matters. The select+load transformation only
occurs when isSafeToLoadUnconditionally is true, and in those situations,
instcombine also changes the underlying objects to be aligned. This seems
like a good idea regardless, and I've verified that it doesn't pessimize
the subsequent realignment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94850
91177308-0d34-0410-b5e6-
96231b3b80d8
// the result of the loaded value.
Value *NewLoad =
IC.Builder->CreateLoad(CastOp, LI.isVolatile(), CI->getName());
+ cast<LoadInst>(NewLoad)->setAlignment(LI.getAlignment());
// Now cast the result of the load.
return new BitCastInst(NewLoad, LI.getType());
}
SI->getOperand(1)->getName()+".val");
Value *V2 = Builder->CreateLoad(SI->getOperand(2),
SI->getOperand(2)->getName()+".val");
+ cast<LoadInst>(V1)->setAlignment(LI.getAlignment());
+ cast<LoadInst>(V2)->setAlignment(LI.getAlignment());
return SelectInst::Create(SI->getCondition(), V1, V2);
}