summaryrefslogtreecommitdiff
path: root/lib/CodeGen/ScheduleDAGInstrs.h
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2011-06-02 20:07:12 +0000
committerDevang Patel <dpatel@apple.com>2011-06-02 20:07:12 +0000
commitcf4cc84738abc5f63a05b0956e756c66c519ded5 (patch)
tree5d6bcfeb35690882b05903706bb720df40d6189b /lib/CodeGen/ScheduleDAGInstrs.h
parent580cbd9cf0b8f6f10bcb6b21a20dfd7d82680d3f (diff)
downloadllvm-cf4cc84738abc5f63a05b0956e756c66c519ded5.tar.gz
llvm-cf4cc84738abc5f63a05b0956e756c66c519ded5.tar.bz2
llvm-cf4cc84738abc5f63a05b0956e756c66c519ded5.tar.xz
During post RA scheduling, do not try to chase reg defs. to preserve DBG_VALUEs. This approach has several downsides, for example, it does not work when dbg value is a constant integer, it does not work if reg is defined more than once, it places end of debug value range markers in the wrong place. It even causes misleading incorrect debug info when duplicate DBG_VALUE instructions point to same reg def.
Instead, use simpler approach and let DBG_VALUE follow its predecessor instruction. After live debug value analysis pass, all DBG_VALUE instruction are placed at the right place. Thanks Jakob for the hint! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132483 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/ScheduleDAGInstrs.h')
-rw-r--r--lib/CodeGen/ScheduleDAGInstrs.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/CodeGen/ScheduleDAGInstrs.h b/lib/CodeGen/ScheduleDAGInstrs.h
index c878287d9c..ae58bc7e57 100644
--- a/lib/CodeGen/ScheduleDAGInstrs.h
+++ b/lib/CodeGen/ScheduleDAGInstrs.h
@@ -110,9 +110,9 @@ namespace llvm {
std::vector<std::vector<SUnit *> > Defs;
std::vector<std::vector<SUnit *> > Uses;
- /// DbgValueVec - Remember DBG_VALUEs that refer to a particular
- /// register.
- std::vector<MachineInstr *>DbgValueVec;
+ /// DbgValues - Remember instruction that preceeds DBG_VALUE.
+ std::vector<std::pair<MachineInstr *, MachineInstr *> >DbgValues;
+ MachineInstr *FirstDbgValue;
/// PendingLoads - Remember where unknown loads are after the most recent
/// unknown store, as we iterate. As with Defs and Uses, this is here