summaryrefslogtreecommitdiffstats
path: root/lib/CodeGen/PostRASchedulerList.cpp
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2010-04-17 00:49:11 +0000
committerBob Wilson <bob.wilson@apple.com>2010-04-17 00:49:11 +0000
commit8295d4c96c8530acb7ae0098d813b53dc4fe0a89 (patch)
tree9e3abf15b426570160db1cb7fde6d0ecc71c2b4a /lib/CodeGen/PostRASchedulerList.cpp
parent23eaf26fa3510526b11230c76ea39221277dd2ea (diff)
downloadexternal_llvm-8295d4c96c8530acb7ae0098d813b53dc4fe0a89.zip
external_llvm-8295d4c96c8530acb7ae0098d813b53dc4fe0a89.tar.gz
external_llvm-8295d4c96c8530acb7ae0098d813b53dc4fe0a89.tar.bz2
As a temporary workaround for post-RA not handling DebugValue instructions,
just remove them all. Radar 7873207 (working around the root problem of Radar 7759363). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101604 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/PostRASchedulerList.cpp')
-rw-r--r--lib/CodeGen/PostRASchedulerList.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/CodeGen/PostRASchedulerList.cpp b/lib/CodeGen/PostRASchedulerList.cpp
index 38abcb4..79a25ef 100644
--- a/lib/CodeGen/PostRASchedulerList.cpp
+++ b/lib/CodeGen/PostRASchedulerList.cpp
@@ -265,6 +265,17 @@ bool PostRAScheduler::runOnMachineFunction(MachineFunction &Fn) {
// Initialize register live-range state for scheduling in this block.
Scheduler.StartBlock(MBB);
+ // FIXME: Temporary workaround for <rdar://problem/7759363>: The post-RA
+ // scheduler has some sort of problem with DebugValue instructions that
+ // causes an assertion in LeaksContext.h to fail occasionally. Just
+ // remove all those instructions for now.
+ for (MachineBasicBlock::iterator I = MBB->begin(), E = MBB->end();
+ I != E; ) {
+ MachineInstr *MI = &*I++;
+ if (MI->isDebugValue())
+ MI->eraseFromParent();
+ }
+
// Schedule each sequence of instructions not interrupted by a label
// or anything else that effectively needs to shut down scheduling.
MachineBasicBlock::iterator Current = MBB->end();