[llvm-commits] [llvm] r145879 - in /llvm/trunk: lib/Analysis/ValueTracking.cpp test/Transforms/MemCpyOpt/form-memset.ll

Chad Rosier mcrosier at apple.com
Mon Dec 5 16:19:08 PST 2011


Author: mcrosier
Date: Mon Dec  5 18:19:08 2011
New Revision: 145879

URL: http://llvm.org/viewvc/llvm-project?rev=145879&view=rev
Log:
Probably not a good idea to convert a single vector load into a memcpy.  We
don't do this now, but add a test case to prevent this from happening in the
future.
Additional test for rdar://9892684

Modified:
    llvm/trunk/lib/Analysis/ValueTracking.cpp
    llvm/trunk/test/Transforms/MemCpyOpt/form-memset.ll

Modified: llvm/trunk/lib/Analysis/ValueTracking.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ValueTracking.cpp?rev=145879&r1=145878&r2=145879&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/ValueTracking.cpp (original)
+++ llvm/trunk/lib/Analysis/ValueTracking.cpp Mon Dec  5 18:19:08 2011
@@ -1370,6 +1370,8 @@
     
     return Val;
   }
+
+  // FIXME: Vector types (e.g., <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>).
   
   // Conceptually, we could handle things like:
   //   %a = zext i8 %X to i16

Modified: llvm/trunk/test/Transforms/MemCpyOpt/form-memset.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/MemCpyOpt/form-memset.ll?rev=145879&r1=145878&r2=145879&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/MemCpyOpt/form-memset.ll (original)
+++ llvm/trunk/test/Transforms/MemCpyOpt/form-memset.ll Mon Dec  5 18:19:08 2011
@@ -236,3 +236,15 @@
 ; CHECK: call void @llvm.memset.p0i8.i64(i8* %5, i8 -1, i64 20, i32 4, i1 false)
   ret void
 }
+
+%struct.test8 = type { [4 x i32] }
+
+define void @test8() {
+entry:
+  %memtmp = alloca %struct.test8, align 16
+  %0 = bitcast %struct.test8* %memtmp to <4 x i32>*
+  store <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, <4 x i32>* %0, align 16
+  ret void
+; CHECK: @test8
+; CHECK: store <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, <4 x i32>* %0, align 16
+}





More information about the llvm-commits mailing list