diff options
author | Pete Cooper <peter_cooper@apple.com> | 2011-12-12 22:16:27 +0000 |
---|---|---|
committer | Pete Cooper <peter_cooper@apple.com> | 2011-12-12 22:16:27 +0000 |
commit | 4777ebb767d1b590c05d502c4a7f6adef4e6d5d1 (patch) | |
tree | 966f9a340cc4d85b357a317b7b695c1610fcf1c0 /lib/CodeGen/InlineSpiller.cpp | |
parent | 22614a02eb8855548a892139e54e478c70050f9f (diff) | |
download | llvm-4777ebb767d1b590c05d502c4a7f6adef4e6d5d1.tar.gz llvm-4777ebb767d1b590c05d502c4a7f6adef4e6d5d1.tar.bz2 llvm-4777ebb767d1b590c05d502c4a7f6adef4e6d5d1.tar.xz |
Fixed register allocator splitting a live range on a spilling variable.
If we create new intervals for a variable that is being spilled, then those new intervals are not guaranteed to also spill. This means that anything reading from the original spilling value might not get the correct value if spills were missed.
Fixes <rdar://problem/10546864>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146428 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/InlineSpiller.cpp')
-rw-r--r-- | lib/CodeGen/InlineSpiller.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/CodeGen/InlineSpiller.cpp b/lib/CodeGen/InlineSpiller.cpp index 8f38887cb1..9bf810e117 100644 --- a/lib/CodeGen/InlineSpiller.cpp +++ b/lib/CodeGen/InlineSpiller.cpp @@ -957,7 +957,7 @@ void InlineSpiller::reMaterializeAll() { if (DeadDefs.empty()) return; DEBUG(dbgs() << "Remat created " << DeadDefs.size() << " dead defs.\n"); - Edit->eliminateDeadDefs(DeadDefs, LIS, VRM, TII); + Edit->eliminateDeadDefs(DeadDefs, LIS, VRM, TII, RegsToSpill); // Get rid of deleted and empty intervals. for (unsigned i = RegsToSpill.size(); i != 0; --i) { @@ -1240,7 +1240,7 @@ void InlineSpiller::spillAll() { // Hoisted spills may cause dead code. if (!DeadDefs.empty()) { DEBUG(dbgs() << "Eliminating " << DeadDefs.size() << " dead defs\n"); - Edit->eliminateDeadDefs(DeadDefs, LIS, VRM, TII); + Edit->eliminateDeadDefs(DeadDefs, LIS, VRM, TII, RegsToSpill); } // Finally delete the SnippetCopies. |