* Clean up code to use isa & dyncast instead of poking directly into instructions
authorChris Lattner <sabre@nondot.org>
Sat, 13 Apr 2002 18:34:38 +0000 (18:34 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 13 Apr 2002 18:34:38 +0000 (18:34 +0000)
* Do not print the allocation size for a non array allocation (this used to work,
  but was broken).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2235 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/AsmWriter.cpp

index f5e0fcfa922031a2e7f9b1dfac95a5df8c209fa6..aa11d81f27e0804636a29f28dbedd2b258b9ec8d 100644 (file)
@@ -508,14 +508,14 @@ void AssemblyWriter::printInstruction(const Instruction *I) {
   const Value *Operand = I->getNumOperands() ? I->getOperand(0) : 0;
 
   // Special case conditional branches to swizzle the condition out to the front
-  if (I->getOpcode() == Instruction::Br && I->getNumOperands() > 1) {
+  if (isa<BranchInst>(I) && I->getNumOperands() > 1) {
     writeOperand(I->getOperand(2), true);
     Out << ",";
     writeOperand(Operand, true);
     Out << ",";
     writeOperand(I->getOperand(1), true);
 
-  } else if (I->getOpcode() == Instruction::Switch) {
+  } else if (isa<SwitchInst>(I)) {
     // Special case switch statement to get formatting nice and correct...
     writeOperand(Operand         , true); Out << ",";
     writeOperand(I->getOperand(1), true); Out << " [";
@@ -548,8 +548,9 @@ void AssemblyWriter::printInstruction(const Instruction *I) {
     // only do this if the first argument is a pointer to a nonvararg function,
     // and if the value returned is not a pointer to a function.
     //
-    if (RetTy && !MTy->isVarArg() &&
-        (!isa<PointerType>(RetTy)||!isa<FunctionType>(cast<PointerType>(RetTy)))){
+    if (RetTy && MTy && !MTy->isVarArg() &&
+        (!isa<PointerType>(RetTy) || 
+         !isa<FunctionType>(cast<PointerType>(RetTy)))) {
       Out << " "; printType(RetTy);
       writeOperand(Operand, false);
     } else {
@@ -578,13 +579,12 @@ void AssemblyWriter::printInstruction(const Instruction *I) {
     Out << " except";
     writeOperand(II->getExceptionalDest(), true);
 
-  } else if (I->getOpcode() == Instruction::Malloc || 
-            I->getOpcode() == Instruction::Alloca) {
+  } else if (const AllocationInst *AI = dyn_cast<AllocationInst>(I)) {
     Out << " ";
-    printType(cast<const PointerType>(I->getType())->getElementType());
-    if (I->getNumOperands()) {
+    printType(AI->getType()->getElementType());
+    if (AI->isArrayAllocation()) {
       Out << ",";
-      writeOperand(I->getOperand(0), true);
+      writeOperand(AI->getArraySize(), true);
     }
   } else if (isa<CastInst>(I)) {
     writeOperand(Operand, true);