* Expose new command line arg --debug-pass for gccas and llc debugging
[oota-llvm.git] / lib / VMCore / AsmWriter.cpp
index 9523c9428a190f42a1960b8b3ab7073966d081c2..c218c0fcd00af945975651a93f5fe8c5c36b3327 100644 (file)
@@ -16,7 +16,7 @@
 #include "llvm/Method.h"
 #include "llvm/GlobalVariable.h"
 #include "llvm/BasicBlock.h"
-#include "llvm/ConstPoolVals.h"
+#include "llvm/ConstantVals.h"
 #include "llvm/iMemory.h"
 #include "llvm/iTerminators.h"
 #include "llvm/iPHINode.h"
 #include "Support/STLExtras.h"
 #include <algorithm>
 #include <map>
+using std::string;
+using std::map;
+using std::vector;
+using std::ostream;
 
 static const Module *getModuleFromVal(const Value *V) {
   if (const MethodArgument *MA =dyn_cast<const MethodArgument>(V))
@@ -69,7 +73,7 @@ static void WriteAsOperandInternal(ostream &Out, const Value *V, bool PrintName,
   if (PrintName && V->hasName()) {
     Out << " %" << V->getName();
   } else {
-    if (const ConstPoolVal *CPV = dyn_cast<const ConstPoolVal>(V)) {
+    if (const Constant *CPV = dyn_cast<const Constant>(V)) {
       Out << " " << CPV->getStrValue();
     } else {
       int Slot;
@@ -111,8 +115,8 @@ static void fillTypeNameTable(const Module *M,
         //
         const Type *Ty = cast<const Type>(I->second);
         if (!isa<PointerType>(Ty) ||
-            !cast<PointerType>(Ty)->getValueType()->isPrimitiveType())
-          TypeNames.insert(make_pair(Ty, "%"+I->first));
+            !cast<PointerType>(Ty)->getElementType()->isPrimitiveType())
+          TypeNames.insert(std::make_pair(Ty, "%"+I->first));
       }
     }
   }
@@ -174,7 +178,7 @@ static string calcTypeName(const Type *Ty, vector<const Type *> &TypeStack,
     break;
   }
   case Type::PointerTyID:
-    Result = calcTypeName(cast<const PointerType>(Ty)->getValueType(), 
+    Result = calcTypeName(cast<const PointerType>(Ty)->getElementType(), 
                           TypeStack, TypeNames) + " *";
     break;
   case Type::ArrayTyID: {
@@ -215,7 +219,7 @@ static ostream &printTypeInt(ostream &Out, const Type *Ty,
   //
   vector<const Type *> TypeStack;
   string TypeName = calcTypeName(Ty, TypeStack, TypeNames);
-  TypeNames.insert(make_pair(Ty, TypeName));   // Cache type name for later use
+  TypeNames.insert(std::make_pair(Ty, TypeName));//Cache type name for later use
   return Out << TypeName;
 }
 
@@ -275,13 +279,13 @@ public:
   inline void write(const Method *M)         { printMethod(M);      }
   inline void write(const BasicBlock *BB)    { printBasicBlock(BB); }
   inline void write(const Instruction *I)    { printInstruction(I); }
-  inline void write(const ConstPoolVal *CPV) { printConstant(CPV);  }
+  inline void write(const Constant *CPV)     { printConstant(CPV);  }
   inline void write(const Type *Ty)          { printType(Ty);       }
 
 private :
   void printModule(const Module *M);
   void printSymbolTable(const SymbolTable &ST);
-  void printConstant(const ConstPoolVal *CPV);
+  void printConstant(const Constant *CPV);
   void printGlobal(const GlobalVariable *GV);
   void printMethod(const Method *M);
   void printMethodArgument(const MethodArgument *MA);
@@ -325,13 +329,13 @@ void AssemblyWriter::printGlobal(const GlobalVariable *GV) {
   if (!GV->hasInitializer()) Out << "uninitialized ";
 
   Out << (GV->isConstant() ? "constant " : "global ");
-  printType(GV->getType()->getValueType());
+  printType(GV->getType()->getElementType());
 
   if (GV->hasInitializer())
     writeOperand(GV->getInitializer(), false, false);
 
   printInfoComment(GV);
-  Out << endl;
+  Out << "\n";
 }
 
 
@@ -345,10 +349,10 @@ void AssemblyWriter::printSymbolTable(const SymbolTable &ST) {
     
     for (; I != End; ++I) {
       const Value *V = I->second;
-      if (const ConstPoolVal *CPV = dyn_cast<const ConstPoolVal>(V)) {
+      if (const Constant *CPV = dyn_cast<const Constant>(V)) {
        printConstant(CPV);
       } else if (const Type *Ty = dyn_cast<const Type>(V)) {
-       Out << "\t%" << I->first << " = type " << Ty->getDescription() << endl;
+       Out << "\t%" << I->first << " = type " << Ty->getDescription() << "\n";
       }
     }
   }
@@ -357,7 +361,7 @@ void AssemblyWriter::printSymbolTable(const SymbolTable &ST) {
 
 // printConstant - Print out a constant pool entry...
 //
-void AssemblyWriter::printConstant(const ConstPoolVal *CPV) {
+void AssemblyWriter::printConstant(const Constant *CPV) {
   // Don't print out unnamed constants, they will be inlined
   if (!CPV->hasName()) return;
 
@@ -378,7 +382,7 @@ void AssemblyWriter::printConstant(const ConstPoolVal *CPV) {
     else Out << "<badref>";
   } 
 
-  Out << endl;
+  Out << "\n";
 }
 
 // printMethod - Print all aspects of a method.
@@ -481,7 +485,7 @@ void AssemblyWriter::printInfoComment(const Value *V) {
       if (Slot >= 0) Out << ":" << Slot;
       else Out << ":<badref>";
     }
-    Out << "\t[#uses=" << V->use_size() << "]";  // Output # uses
+    Out << " [#uses=" << V->use_size() << "]";  // Output # uses
   }
 }
 
@@ -534,7 +538,7 @@ void AssemblyWriter::printInstruction(const Instruction *I) {
     Out << " void";
   } else if (isa<CallInst>(I)) {
     const PointerType *PTy = dyn_cast<PointerType>(Operand->getType());
-    const MethodType  *MTy = PTy ? dyn_cast<MethodType>(PTy->getValueType()) :0;
+    const MethodType  *MTy = PTy ?dyn_cast<MethodType>(PTy->getElementType()):0;
     const Type      *RetTy = MTy ? MTy->getReturnType() : 0;
 
     // If possible, print out the short form of the call instruction, but we can
@@ -574,7 +578,7 @@ void AssemblyWriter::printInstruction(const Instruction *I) {
   } else if (I->getOpcode() == Instruction::Malloc || 
             I->getOpcode() == Instruction::Alloca) {
     Out << " ";
-    printType(cast<const PointerType>(I->getType())->getValueType());
+    printType(cast<const PointerType>(I->getType())->getElementType());
     if (I->getNumOperands()) {
       Out << ",";
       writeOperand(I->getOperand(0), true);
@@ -614,7 +618,7 @@ void AssemblyWriter::printInstruction(const Instruction *I) {
   }
 
   printInfoComment(I);
-  Out << endl;
+  Out << "\n";
 }
 
 
@@ -666,7 +670,7 @@ void WriteToAssembly(const BasicBlock *BB, ostream &o) {
   W.write(BB);
 }
 
-void WriteToAssembly(const ConstPoolVal *CPV, ostream &o) {
+void WriteToAssembly(const Constant *CPV, ostream &o) {
   if (CPV == 0) { o << "<null> constant pool value\n"; return; }
   o << " " << CPV->getType()->getDescription() << " " << CPV->getStrValue();
 }
@@ -701,7 +705,7 @@ CachedWriter &CachedWriter::operator<<(const Value *V) {
   switch (V->getValueType()) {
   case Value::ConstantVal:
     Out << " "; AW->write(V->getType());
-    Out << " " << cast<ConstPoolVal>(V)->getStrValue(); break;
+    Out << " " << cast<Constant>(V)->getStrValue(); break;
   case Value::MethodArgumentVal: 
     AW->write(V->getType()); Out << " " << V->getName(); break;
   case Value::TypeVal:           AW->write(cast<const Type>(V)); break;