diff options
author | Dan Gohman <gohman@apple.com> | 2008-07-30 18:36:51 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2008-07-30 18:36:51 +0000 |
commit | 2fe4352691bf4b80517ee36730cfddfb719d79fc (patch) | |
tree | 1fd1d8848a214223b8d85c8581651cb81f2c52c7 /llvm/lib/CodeGen/SelectionDAG | |
parent | c818c015395232a3c004ee0a4f1b1dc1ed389630 (diff) | |
download | bcm5719-llvm-2fe4352691bf4b80517ee36730cfddfb719d79fc.tar.gz bcm5719-llvm-2fe4352691bf4b80517ee36730cfddfb719d79fc.zip |
Don't look for leaf values to store when lowering stores of
empty structs. This fixes PR2612.
llvm-svn: 54226
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index 65753e53446..6267eb9fea8 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -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(); |