[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