Date: Sat, 4 Jul 2015 20:07:38 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r285149 - in head/contrib/llvm/lib/Transforms: Scalar Utils Message-ID: <201507042007.t64K7c9w000375@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201507042007.t64K7c9w000375>