mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-19 04:31:17 +00:00
Fix the result type of SELECT nodes lowered from Select instructions with
aggregate return values. This fixes PR5754. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91145 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
817a46454a
commit
a4f9cc4e55
@ -2108,7 +2108,7 @@ void SelectionDAGBuilder::visitSelect(User &I) {
|
||||
|
||||
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));
|
||||
|
||||
|
15
test/CodeGen/X86/select-aggregate.ll
Normal file
15
test/CodeGen/X86/select-aggregate.ll
Normal file
@ -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
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user