Mercurial > hg > CbC > CbC_llvm
comparison lib/Target/Hexagon/RDFCopy.h @ 120:1172e4bd9c6f
update 4.0.0
author | mir3636 |
---|---|
date | Fri, 25 Nov 2016 19:14:25 +0900 |
parents | 7d135dc70f03 |
children | 803732b1fca8 |
comparison
equal
deleted
inserted
replaced
101:34baf5011add | 120:1172e4bd9c6f |
---|---|
16 | 16 |
17 namespace llvm { | 17 namespace llvm { |
18 class MachineBasicBlock; | 18 class MachineBasicBlock; |
19 class MachineDominatorTree; | 19 class MachineDominatorTree; |
20 class MachineInstr; | 20 class MachineInstr; |
21 } | |
22 | 21 |
23 namespace rdf { | 22 namespace rdf { |
24 struct CopyPropagation { | 23 struct CopyPropagation { |
25 CopyPropagation(DataFlowGraph &dfg) : MDT(dfg.getDT()), DFG(dfg), | 24 CopyPropagation(DataFlowGraph &dfg) : MDT(dfg.getDT()), DFG(dfg), |
26 Trace(false) {} | 25 Trace(false) {} |
27 virtual ~CopyPropagation() {} | 26 virtual ~CopyPropagation() {} |
28 | 27 |
29 bool run(); | 28 bool run(); |
30 void trace(bool On) { Trace = On; } | 29 void trace(bool On) { Trace = On; } |
31 bool trace() const { return Trace; } | 30 bool trace() const { return Trace; } |
31 DataFlowGraph &getDFG() { return DFG; } | |
32 | 32 |
33 typedef std::map<RegisterRef, RegisterRef> EqualityMap; | 33 typedef std::map<RegisterRef, RegisterRef> EqualityMap; |
34 virtual bool interpretAsCopy(const MachineInstr *MI, EqualityMap &EM); | 34 virtual bool interpretAsCopy(const MachineInstr *MI, EqualityMap &EM); |
35 | 35 |
36 private: | 36 private: |
47 | 47 |
48 void recordCopy(NodeAddr<StmtNode*> SA, EqualityMap &EM); | 48 void recordCopy(NodeAddr<StmtNode*> SA, EqualityMap &EM); |
49 void updateMap(NodeAddr<InstrNode*> IA); | 49 void updateMap(NodeAddr<InstrNode*> IA); |
50 bool scanBlock(MachineBasicBlock *B); | 50 bool scanBlock(MachineBasicBlock *B); |
51 }; | 51 }; |
52 } | 52 } // namespace rdf |
53 } // namespace llvm | |
53 | 54 |
54 #endif | 55 #endif |