diff options
| author | Chris Lattner <sabre@nondot.org> | 2010-03-12 07:15:36 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2010-03-12 07:15:36 +0000 |
| commit | 53ebf8a7cabb660100d4c67d43f9d87135885e35 (patch) | |
| tree | f2451e1477881ae2e55c438118900324456882f3 | |
| parent | c493a7324003732b845be1fee11df312d2846207 (diff) | |
| download | bcm5719-llvm-53ebf8a7cabb660100d4c67d43f9d87135885e35.tar.gz bcm5719-llvm-53ebf8a7cabb660100d4c67d43f9d87135885e35.zip | |
fix PR6577, a bug in sdbuilder lowering select instructions
whose true value was not Val#0.
llvm-svn: 98336
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 3 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/crash.ll | 14 |
2 files changed, 16 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index ae5474d8d49..f4d3c34e68d 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -2185,7 +2185,8 @@ void SelectionDAGBuilder::visitSelect(User &I) { for (unsigned i = 0; i != NumValues; ++i) Values[i] = DAG.getNode(ISD::SELECT, getCurDebugLoc(), - TrueVal.getNode()->getValueType(i), Cond, + TrueVal.getNode()->getValueType(TrueVal.getResNo()+i), + Cond, SDValue(TrueVal.getNode(), TrueVal.getResNo() + i), SDValue(FalseVal.getNode(), diff --git a/llvm/test/CodeGen/X86/crash.ll b/llvm/test/CodeGen/X86/crash.ll index b9037f35929..08f59add2bc 100644 --- a/llvm/test/CodeGen/X86/crash.ll +++ b/llvm/test/CodeGen/X86/crash.ll @@ -33,3 +33,17 @@ if.then: ; preds = %land.end if.end: ; preds = %land.end ret void } + +; PR6577 +%pair = type { i64, double } + +define void @on4() { +dependentGraph243.exit: + %subject19 = load %pair* undef ; <%1> [#uses=1] + %0 = extractvalue %pair %subject19, 1 ; <double> [#uses=2] + %1 = select i1 undef, double %0, double undef ; <double> [#uses=1] + %2 = select i1 undef, double %1, double %0 ; <double> [#uses=1] + %3 = insertvalue %pair undef, double %2, 1 ; <%1> [#uses=1] + store %pair %3, %pair* undef + ret void +} |

