Pull in r241142 from upstream llvm trunk (by David Majnemer):
[SCCP] Turn loads of null into undef instead of zero initialized values Surprisingly, this is a correctness issue: the mmx type exists for calling convention purposes, LLVM doesn't have a zero representation for them. This partially fixes PR23999. Pull in r241143 from upstream llvm trunk (by David Majnemer): [LoopUnroll] Use undef for phis with no value live We would create a phi node with a zero initialized operand instead of undef in the case where no value was originally available. This was problematic for x86_mmx which has no null value. These fix a "Cannot create a null constant of that type!" error when compiling the graphics/sdl2_gfx port with MMX enabled. Reported by: amdmi3
This commit is contained in:
parent
ce6959baeb
commit
d26c180162
@ -1054,7 +1054,7 @@ void SCCPSolver::visitLoadInst(LoadInst &I) {
|
||||
|
||||
// load null -> null
|
||||
if (isa<ConstantPointerNull>(Ptr) && I.getPointerAddressSpace() == 0)
|
||||
return markConstant(IV, &I, Constant::getNullValue(I.getType()));
|
||||
return markConstant(IV, &I, UndefValue::get(I.getType()));
|
||||
|
||||
// Transform load (constant global) into the value loaded.
|
||||
if (GlobalVariable *GV = dyn_cast<GlobalVariable>(Ptr)) {
|
||||
|
@ -81,7 +81,7 @@ static void ConnectProlog(Loop *L, Value *BECount, unsigned Count,
|
||||
if (L->contains(PN)) {
|
||||
NewPN->addIncoming(PN->getIncomingValueForBlock(NewPH), OrigPH);
|
||||
} else {
|
||||
NewPN->addIncoming(Constant::getNullValue(PN->getType()), OrigPH);
|
||||
NewPN->addIncoming(UndefValue::get(PN->getType()), OrigPH);
|
||||
}
|
||||
|
||||
Value *V = PN->getIncomingValueForBlock(Latch);
|
||||
|
Loading…
x
Reference in New Issue
Block a user