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