@@ -65,9 +65,7 @@ class Fact {
6565 }
6666
6767 virtual void dump (llvm::raw_ostream &OS, const LoanManager &,
68- const OriginManager &) const {
69- OS << " Fact (Kind: " << static_cast <int >(K) << " )\n " ;
70- }
68+ const OriginManager &) const ;
7169};
7270
7371// / A `ProgramPoint` identifies a location in the CFG by pointing to a specific
@@ -88,13 +86,7 @@ class IssueFact : public Fact {
8886 LoanID getLoanID () const { return LID; }
8987 OriginID getOriginID () const { return OID; }
9088 void dump (llvm::raw_ostream &OS, const LoanManager &LM,
91- const OriginManager &OM) const override {
92- OS << " Issue (" ;
93- LM.getLoan (getLoanID ()).dump (OS);
94- OS << " , ToOrigin: " ;
95- OM.dump (getOriginID (), OS);
96- OS << " )\n " ;
97- }
89+ const OriginManager &OM) const override ;
9890};
9991
10092class ExpireFact : public Fact {
@@ -111,11 +103,7 @@ class ExpireFact : public Fact {
111103 SourceLocation getExpiryLoc () const { return ExpiryLoc; }
112104
113105 void dump (llvm::raw_ostream &OS, const LoanManager &LM,
114- const OriginManager &) const override {
115- OS << " Expire (" ;
116- LM.getLoan (getLoanID ()).dump (OS);
117- OS << " )\n " ;
118- }
106+ const OriginManager &) const override ;
119107};
120108
121109class OriginFlowFact : public Fact {
@@ -139,14 +127,7 @@ class OriginFlowFact : public Fact {
139127 bool getKillDest () const { return KillDest; }
140128
141129 void dump (llvm::raw_ostream &OS, const LoanManager &,
142- const OriginManager &OM) const override {
143- OS << " OriginFlow (Dest: " ;
144- OM.dump (getDestOriginID (), OS);
145- OS << " , Src: " ;
146- OM.dump (getSrcOriginID (), OS);
147- OS << (getKillDest () ? " " : " , Merge" );
148- OS << " )\n " ;
149- }
130+ const OriginManager &OM) const override ;
150131};
151132
152133class ReturnOfOriginFact : public Fact {
@@ -160,11 +141,7 @@ class ReturnOfOriginFact : public Fact {
160141 ReturnOfOriginFact (OriginID OID) : Fact(Kind::ReturnOfOrigin), OID(OID) {}
161142 OriginID getReturnedOriginID () const { return OID; }
162143 void dump (llvm::raw_ostream &OS, const LoanManager &,
163- const OriginManager &OM) const override {
164- OS << " ReturnOfOrigin (" ;
165- OM.dump (getReturnedOriginID (), OS);
166- OS << " )\n " ;
167- }
144+ const OriginManager &OM) const override ;
168145};
169146
170147class UseFact : public Fact {
@@ -187,11 +164,7 @@ class UseFact : public Fact {
187164 bool isWritten () const { return IsWritten; }
188165
189166 void dump (llvm::raw_ostream &OS, const LoanManager &,
190- const OriginManager &OM) const override {
191- OS << " Use (" ;
192- OM.dump (getUsedOrigin (OM), OS);
193- OS << " , " << (isWritten () ? " Write" : " Read" ) << " )\n " ;
194- }
167+ const OriginManager &OM) const override ;
195168};
196169
197170// / A dummy-fact used to mark a specific point in the code for testing.
@@ -208,9 +181,7 @@ class TestPointFact : public Fact {
208181 StringRef getAnnotation () const { return Annotation; }
209182
210183 void dump (llvm::raw_ostream &OS, const LoanManager &,
211- const OriginManager &) const override {
212- OS << " TestPoint (Annotation: \" " << getAnnotation () << " \" )\n " ;
213- }
184+ const OriginManager &) const override ;
214185};
215186
216187class FactManager {
@@ -233,26 +204,7 @@ class FactManager {
233204 return new (Mem) FactType (std::forward<Args>(args)...);
234205 }
235206
236- void dump (const CFG &Cfg, AnalysisDeclContext &AC) const {
237- llvm::dbgs () << " ==========================================\n " ;
238- llvm::dbgs () << " Lifetime Analysis Facts:\n " ;
239- llvm::dbgs () << " ==========================================\n " ;
240- if (const Decl *D = AC.getDecl ())
241- if (const auto *ND = dyn_cast<NamedDecl>(D))
242- llvm::dbgs () << " Function: " << ND->getQualifiedNameAsString () << " \n " ;
243- // Print blocks in the order as they appear in code for a stable ordering.
244- for (const CFGBlock *B : *AC.getAnalysis <PostOrderCFGView>()) {
245- llvm::dbgs () << " Block B" << B->getBlockID () << " :\n " ;
246- auto It = BlockToFactsMap.find (B);
247- if (It != BlockToFactsMap.end ()) {
248- for (const Fact *F : It->second ) {
249- llvm::dbgs () << " " ;
250- F->dump (llvm::dbgs (), LoanMgr, OriginMgr);
251- }
252- }
253- llvm::dbgs () << " End of Block\n " ;
254- }
255- }
207+ void dump (const CFG &Cfg, AnalysisDeclContext &AC) const ;
256208
257209 LoanManager &getLoanMgr () { return LoanMgr; }
258210 const LoanManager &getLoanMgr () const { return LoanMgr; }
0 commit comments