diff options
author | Sanjoy Das <sanjoy@playingwithpointers.com> | 2016-03-24 18:57:39 +0000 |
---|---|---|
committer | Sanjoy Das <sanjoy@playingwithpointers.com> | 2016-03-24 18:57:39 +0000 |
commit | c0c59fe14ea324d69a09d12bf2de2f543b990ac2 (patch) | |
tree | 906f829b715e0c0b8f2f151046d449a4a2c3789a /llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp | |
parent | 42f91a995960b13dc2a661381e1e18b226d18cea (diff) | |
download | bcm5719-llvm-c0c59fe14ea324d69a09d12bf2de2f543b990ac2.tar.gz bcm5719-llvm-c0c59fe14ea324d69a09d12bf2de2f543b990ac2.zip |
[Statepoints] Fix yet another issue around gc pointer uniqueing
Given that StatepointLowering now uniques derived pointers before
putting them in the per-statepoint spill map, we may end up with missing
entries for derived pointers when we visit a gc.relocate on a pointer
that was de-duplicated away.
Fix this by keeping two maps, one mapping gc pointers to their
de-duplicated values, and one mapping a de-duplicated value to the slot
it is spilled in.
llvm-svn: 264320
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp b/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp index e5c7ade8859..9a99968b0ad 100644 --- a/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp @@ -356,7 +356,7 @@ void FunctionLoweringInfo::clear() { ByValArgFrameIndexMap.clear(); RegFixups.clear(); StatepointStackSlots.clear(); - StatepointRelocatedValues.clear(); + StatepointSpillMaps.clear(); PreferredExtendType.clear(); } |