[llvm-commits] [llvm] r50252 - in /llvm/trunk: lib/Target/X86/X86ISelDAGToDAG.cpp test/CodeGen/X86/2008-04-24-pblendw-fold-crash.ll

Chris Lattner sabre at nondot.org
Thu Apr 24 22:13:01 PDT 2008


Author: lattner
Date: Fri Apr 25 00:13:01 2008
New Revision: 50252

URL: http://llvm.org/viewvc/llvm-project?rev=50252&view=rev
Log:
Loosen up an assertion to allow intrinsics.  I really have no
idea what this code (findNonImmUse) does, so I'm only guessing 
that this is the right thing.  It would be really really nice
if this had comments and perhaps switched to SmallPtrSet
(hint hint) :)

This fixes rdar://5886601, a crash on gcc.target/i386/sse4_1-pblendw.c

Added:
    llvm/trunk/test/CodeGen/X86/2008-04-24-pblendw-fold-crash.ll
Modified:
    llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp

Modified: llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp?rev=50252&r1=50251&r2=50252&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp Fri Apr 25 00:13:01 2008
@@ -252,7 +252,10 @@
         continue; // Immediate use is ok.
       if (Use == Root) {
         assert(Use->getOpcode() == ISD::STORE ||
-               Use->getOpcode() == X86ISD::CMP);
+               Use->getOpcode() == X86ISD::CMP ||
+               Use->getOpcode() == ISD::INTRINSIC_WO_CHAIN ||
+               Use->getOpcode() == ISD::INTRINSIC_W_CHAIN ||
+               Use->getOpcode() == ISD::INTRINSIC_VOID);
         continue;
       }
       found = true;

Added: llvm/trunk/test/CodeGen/X86/2008-04-24-pblendw-fold-crash.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2008-04-24-pblendw-fold-crash.ll?rev=50252&view=auto

==============================================================================
--- llvm/trunk/test/CodeGen/X86/2008-04-24-pblendw-fold-crash.ll (added)
+++ llvm/trunk/test/CodeGen/X86/2008-04-24-pblendw-fold-crash.ll Fri Apr 25 00:13:01 2008
@@ -0,0 +1,15 @@
+; RUN: llvm-as < %s | llc -mattr=+sse41
+; rdar://5886601
+; gcc testsuite:  gcc.target/i386/sse4_1-pblendw.c
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
+target triple = "i386-apple-darwin8"
+
+define i32 @main() nounwind  {
+entry:
+	%tmp122 = load <2 x i64>* null, align 16		; <<2 x i64>> [#uses=1]
+	%tmp126 = bitcast <2 x i64> %tmp122 to <8 x i16>		; <<8 x i16>> [#uses=1]
+	%tmp129 = call <8 x i16> @llvm.x86.sse41.pblendw( <8 x i16> zeroinitializer, <8 x i16> %tmp126, i32 2 ) nounwind 		; <<8 x i16>> [#uses=0]
+	ret i32 0
+}
+
+declare <8 x i16> @llvm.x86.sse41.pblendw(<8 x i16>, <8 x i16>, i32) nounwind 





More information about the llvm-commits mailing list