svn commit: r285149 - in head/contrib/llvm/lib/Transforms: Scalar Utils
Dimitry Andric
dim at FreeBSD.org
Sat Jul 4 20:07:39 UTC 2015
Author: dim
Date: Sat Jul 4 20:07:37 2015
New Revision: 285149
URL: https://svnweb.freebsd.org/changeset/base/285149
Log:
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
Modified:
head/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp
head/contrib/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
Modified: head/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp
==============================================================================
--- head/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp Sat Jul 4 19:00:38 2015 (r285148)
+++ head/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp Sat Jul 4 20:07:37 2015 (r285149)
@@ -1054,7 +1054,7 @@ void SCCPSolver::visitLoadInst(LoadInst
// 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)) {
Modified: head/contrib/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
==============================================================================
--- head/contrib/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp Sat Jul 4 19:00:38 2015 (r285148)
+++ head/contrib/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp Sat Jul 4 20:07:37 2015 (r285149)
@@ -81,7 +81,7 @@ static void ConnectProlog(Loop *L, Value
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);
More information about the svn-src-head
mailing list