[llvm-commits] [llvm] r91145 - in /llvm/trunk: lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp test/CodeGen/X86/select-aggregate.ll

Dan Gohman gohman at apple.com
Fri Dec 11 11:50:51 PST 2009


Author: djg
Date: Fri Dec 11 13:50:50 2009
New Revision: 91145

URL: http://llvm.org/viewvc/llvm-project?rev=91145&view=rev
Log:
Fix the result type of SELECT nodes lowered from Select instructions with
aggregate return values. This fixes PR5754.

Added:
    llvm/trunk/test/CodeGen/X86/select-aggregate.ll
Modified:
    llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp?rev=91145&r1=91144&r2=91145&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp Fri Dec 11 13:50:50 2009
@@ -2108,7 +2108,7 @@
 
     for (unsigned i = 0; i != NumValues; ++i)
       Values[i] = DAG.getNode(ISD::SELECT, getCurDebugLoc(),
-                              TrueVal.getValueType(), Cond,
+                              TrueVal.getNode()->getValueType(i), Cond,
                               SDValue(TrueVal.getNode(), TrueVal.getResNo() + i),
                               SDValue(FalseVal.getNode(), FalseVal.getResNo() + i));
 

Added: llvm/trunk/test/CodeGen/X86/select-aggregate.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/select-aggregate.ll?rev=91145&view=auto

==============================================================================
--- llvm/trunk/test/CodeGen/X86/select-aggregate.ll (added)
+++ llvm/trunk/test/CodeGen/X86/select-aggregate.ll Fri Dec 11 13:50:50 2009
@@ -0,0 +1,15 @@
+; RUN: llc < %s -march=x86-64 | FileCheck %s
+; PR5754
+
+; CHECK: cmovne %rdi, %rsi
+; CHECK: movl (%rsi), %eax
+
+%0 = type { i64, i32 }
+
+define i32 @foo(%0* %p, %0* %q, i1 %r) nounwind {
+  %t0 = load %0* %p
+  %t1 = load %0* %q
+  %t4 = select i1 %r, %0 %t0, %0 %t1
+  %t5 = extractvalue %0 %t4, 1
+  ret i32 %t5
+}





More information about the llvm-commits mailing list