diff options
| author | Roman Divacky <rdivacky@FreeBSD.org> | 2010-03-16 16:51:38 +0000 | 
|---|---|---|
| committer | Roman Divacky <rdivacky@FreeBSD.org> | 2010-03-16 16:51:38 +0000 | 
| commit | c69102774f9739c81ae1285ed9ae62405071c63c (patch) | |
| tree | 458dd25677a43aef6390ecadb4423817f00e08b0 /lib/CodeGen/GCMetadata.cpp | |
| parent | ea5b2dd11c0526581803e7eb58224a2eabf191e6 (diff) | |
Notes
Diffstat (limited to 'lib/CodeGen/GCMetadata.cpp')
| -rw-r--r-- | lib/CodeGen/GCMetadata.cpp | 44 | 
1 files changed, 23 insertions, 21 deletions
diff --git a/lib/CodeGen/GCMetadata.cpp b/lib/CodeGen/GCMetadata.cpp index 055172b4e0e9..ab0a80022531 100644 --- a/lib/CodeGen/GCMetadata.cpp +++ b/lib/CodeGen/GCMetadata.cpp @@ -17,6 +17,7 @@  #include "llvm/Pass.h"  #include "llvm/CodeGen/Passes.h"  #include "llvm/Function.h" +#include "llvm/MC/MCSymbol.h"  #include "llvm/Support/Debug.h"  #include "llvm/Support/ErrorHandling.h"  #include "llvm/Support/raw_ostream.h" @@ -150,30 +151,31 @@ static const char *DescKind(GC::PointKind Kind) {  }  bool Printer::runOnFunction(Function &F) { -  if (!F.hasGC()) { -    GCFunctionInfo *FD = &getAnalysis<GCModuleInfo>().getFunctionInfo(F); +  if (F.hasGC()) return false; +   +  GCFunctionInfo *FD = &getAnalysis<GCModuleInfo>().getFunctionInfo(F); +   +  OS << "GC roots for " << FD->getFunction().getNameStr() << ":\n"; +  for (GCFunctionInfo::roots_iterator RI = FD->roots_begin(), +                                      RE = FD->roots_end(); RI != RE; ++RI) +    OS << "\t" << RI->Num << "\t" << RI->StackOffset << "[sp]\n"; +   +  OS << "GC safe points for " << FD->getFunction().getNameStr() << ":\n"; +  for (GCFunctionInfo::iterator PI = FD->begin(), +                                PE = FD->end(); PI != PE; ++PI) { -    OS << "GC roots for " << FD->getFunction().getNameStr() << ":\n"; -    for (GCFunctionInfo::roots_iterator RI = FD->roots_begin(), -                                        RE = FD->roots_end(); RI != RE; ++RI) -      OS << "\t" << RI->Num << "\t" << RI->StackOffset << "[sp]\n"; +    OS << "\t" << PI->Label->getName() << ": " +       << DescKind(PI->Kind) << ", live = {"; -    OS << "GC safe points for " << FD->getFunction().getNameStr() << ":\n"; -    for (GCFunctionInfo::iterator PI = FD->begin(), -                                  PE = FD->end(); PI != PE; ++PI) { -       -      OS << "\tlabel " << PI->Num << ": " << DescKind(PI->Kind) << ", live = {"; -       -      for (GCFunctionInfo::live_iterator RI = FD->live_begin(PI), -                                         RE = FD->live_end(PI);;) { -        OS << " " << RI->Num; -        if (++RI == RE) -          break; -        OS << ","; -      } -       -      OS << " }\n"; +    for (GCFunctionInfo::live_iterator RI = FD->live_begin(PI), +                                       RE = FD->live_end(PI);;) { +      OS << " " << RI->Num; +      if (++RI == RE) +        break; +      OS << ",";      } +     +    OS << " }\n";    }    return false;  | 
