[llvm] r241142 - [SCCP] Turn loads of null into undef instead of zero initialized values

David Majnemer david.majnemer at gmail.com
Tue Jun 30 22:38:00 PDT 2015


Author: majnemer
Date: Wed Jul  1 00:37:57 2015
New Revision: 241142

URL: http://llvm.org/viewvc/llvm-project?rev=241142&view=rev
Log:
[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.

Modified:
    llvm/trunk/lib/Transforms/Scalar/SCCP.cpp
    llvm/trunk/test/Transforms/SCCP/crash.ll

Modified: llvm/trunk/lib/Transforms/Scalar/SCCP.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/SCCP.cpp?rev=241142&r1=241141&r2=241142&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/SCCP.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/SCCP.cpp Wed Jul  1 00:37:57 2015
@@ -1055,7 +1055,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: llvm/trunk/test/Transforms/SCCP/crash.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SCCP/crash.ll?rev=241142&r1=241141&r2=241142&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/SCCP/crash.ll (original)
+++ llvm/trunk/test/Transforms/SCCP/crash.ll Wed Jul  1 00:37:57 2015
@@ -27,3 +27,8 @@ define i32 @test2([4 x i32] %A) {
   %B = extractvalue [4 x i32] %A, 1
   ret i32 %B
 }
+
+define x86_mmx @test3() {
+  %load = load x86_mmx, x86_mmx* null
+  ret x86_mmx %load
+}





More information about the llvm-commits mailing list