diff options
| author | Eli Friedman <eli.friedman@gmail.com> | 2011-06-06 05:46:34 +0000 |
|---|---|---|
| committer | Eli Friedman <eli.friedman@gmail.com> | 2011-06-06 05:46:34 +0000 |
| commit | bd375f1a3f2d978c77d573329ad77e37f29c1c41 (patch) | |
| tree | 7356d011e469a285a5fc4c825bcbc785be48a098 /llvm/lib/CodeGen/SelectionDAG/FastISel.cpp | |
| parent | 7df6805d760a41554cad4105bff0ccd5ae469596 (diff) | |
| download | bcm5719-llvm-bd375f1a3f2d978c77d573329ad77e37f29c1c41.tar.gz bcm5719-llvm-bd375f1a3f2d978c77d573329ad77e37f29c1c41.zip | |
PR10077: fix fast-isel of extractvalue of aggregate constants.
llvm-svn: 132676
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/FastISel.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/FastISel.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp index 098fb6896f9..797f1744485 100644 --- a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp @@ -841,8 +841,10 @@ FastISel::SelectExtractValue(const User *U) { DenseMap<const Value *, unsigned>::iterator I = FuncInfo.ValueMap.find(Op0); if (I != FuncInfo.ValueMap.end()) ResultReg = I->second; - else + else if (isa<Instruction>(Op0)) ResultReg = FuncInfo.InitializeRegForValue(Op0); + else + return false; // fast-isel can't handle aggregate constants at the moment // Get the actual result register, which is an offset from the base register. unsigned VTIndex = ComputeLinearIndex(AggTy, EVI->idx_begin(), EVI->idx_end()); |

