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 | 0b4d96baecf3fe6af0fd45ba815bacf91a017f97 (patch) | |
tree | b1eb694fffdd084e178212177a32984e46e54bb3 /lib/CodeGen/SelectionDAG/FastISel.cpp | |
parent | a2898673acd918c766ed94293c77eed29998bee7 (diff) | |
download | llvm-0b4d96baecf3fe6af0fd45ba815bacf91a017f97.tar.gz llvm-0b4d96baecf3fe6af0fd45ba815bacf91a017f97.tar.bz2 llvm-0b4d96baecf3fe6af0fd45ba815bacf91a017f97.tar.xz |
PR10077: fix fast-isel of extractvalue of aggregate constants.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132676 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG/FastISel.cpp')
-rw-r--r-- | lib/CodeGen/SelectionDAG/FastISel.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/CodeGen/SelectionDAG/FastISel.cpp b/lib/CodeGen/SelectionDAG/FastISel.cpp index 098fb6896f..797f174448 100644 --- a/lib/CodeGen/SelectionDAG/FastISel.cpp +++ b/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()); |