mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-02 10:33:53 +00:00
Don't look for leaf values to store when lowering stores of
empty structs. This fixes PR2612. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54226 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d723f722b2
commit
90d33ee746
@ -2928,9 +2928,7 @@ void SelectionDAGLowering::visitLoad(LoadInst &I) {
|
||||
|
||||
void SelectionDAGLowering::visitStore(StoreInst &I) {
|
||||
Value *SrcV = I.getOperand(0);
|
||||
SDValue Src = getValue(SrcV);
|
||||
Value *PtrV = I.getOperand(1);
|
||||
SDValue Ptr = getValue(PtrV);
|
||||
|
||||
SmallVector<MVT, 4> ValueVTs;
|
||||
SmallVector<uint64_t, 4> Offsets;
|
||||
@ -2939,6 +2937,12 @@ void SelectionDAGLowering::visitStore(StoreInst &I) {
|
||||
if (NumValues == 0)
|
||||
return;
|
||||
|
||||
// Get the lowered operands. Note that we do this after
|
||||
// checking if NumResults is zero, because with zero results
|
||||
// the operands won't have values in the map.
|
||||
SDValue Src = getValue(SrcV);
|
||||
SDValue Ptr = getValue(PtrV);
|
||||
|
||||
SDValue Root = getRoot();
|
||||
SmallVector<SDValue, 4> Chains(NumValues);
|
||||
MVT PtrVT = Ptr.getValueType();
|
||||
|
18
test/CodeGen/Generic/empty-load-store.ll
Normal file
18
test/CodeGen/Generic/empty-load-store.ll
Normal file
@ -0,0 +1,18 @@
|
||||
; RUN: llvm-as < %s | llc
|
||||
; PR2612
|
||||
|
||||
@current_foo = internal global { } zeroinitializer
|
||||
|
||||
define i32 @foo() {
|
||||
entry:
|
||||
%retval = alloca i32
|
||||
store i32 0, i32* %retval
|
||||
%local_foo = alloca { }
|
||||
load { }* @current_foo
|
||||
store { } %0, { }* %local_foo
|
||||
br label %return
|
||||
|
||||
return:
|
||||
load i32* %retval
|
||||
ret i32 %1
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user