More changes to make PPC32 and X86 more similar
authorChris Lattner <sabre@nondot.org>
Mon, 16 Aug 2004 23:38:36 +0000 (23:38 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 16 Aug 2004 23:38:36 +0000 (23:38 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15842 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPC32AsmPrinter.cpp
lib/Target/PowerPC/PPCAsmPrinter.cpp

index df7b1bece454d522dd2dda6b53e02ebdc30f686b..151580c8d26894c23e4c79167f45a0e7f92622de 100644 (file)
@@ -152,13 +152,16 @@ static void printAsCString(std::ostream &O, const ConstantArray *CVA) {
 void PowerPCAsmPrinter::emitGlobalConstant(const Constant *CV) {  
   const TargetData &TD = TM.getTargetData();
 
-  if (const ConstantArray *CVA = dyn_cast<ConstantArray>(CV)) {
-    if (isStringCompatible(CVA)) {
-      O << "\t.ascii ";
+  if (CV->isNullValue()) {
+    O << "\t.space\t" << TD.getTypeSize(CV->getType()) << "\n";
+    return;
+  } else if (const ConstantArray *CVA = dyn_cast<ConstantArray>(CV)) {
+    if (CVA->isString()) {
+      O << "\t.ascii\t";
       printAsCString(O, CVA);
       O << "\n";
     } else { // Not a string.  Print the values in successive locations
-      for (unsigned i=0, e = CVA->getNumOperands(); i != e; i++)
+      for (unsigned i = 0, e = CVA->getNumOperands(); i != e; ++i)
         emitGlobalConstant(CVA->getOperand(i));
     }
     return;
@@ -166,7 +169,7 @@ void PowerPCAsmPrinter::emitGlobalConstant(const Constant *CV) {
     // Print the fields in successive locations. Pad to align if needed!
     const StructLayout *cvsLayout = TD.getStructLayout(CVS->getType());
     unsigned sizeSoFar = 0;
-    for (unsigned i = 0, e = CVS->getNumOperands(); i != e; i++) {
+    for (unsigned i = 0, e = CVS->getNumOperands(); i != e; ++i) {
       const Constant* field = CVS->getOperand(i);
 
       // Check if padding is needed and insert one or more 0s.
@@ -243,12 +246,7 @@ void PowerPCAsmPrinter::emitGlobalConstant(const Constant *CV) {
   case Type::FloatTyID: case Type::DoubleTyID:
     assert (0 && "Should have already output floating point constant.");
   default:
-    if (CV == Constant::getNullValue(type)) {  // Zero initializer?
-      O << ".space\t" << TD.getTypeSize(type) << "\n";      
-      return;
-    }
-    std::cerr << "Can't handle printing: " << *CV;
-    abort();
+    assert (0 && "Can't handle printing this type of thing");
     break;
   }
   O << "\t";
index df7b1bece454d522dd2dda6b53e02ebdc30f686b..151580c8d26894c23e4c79167f45a0e7f92622de 100644 (file)
@@ -152,13 +152,16 @@ static void printAsCString(std::ostream &O, const ConstantArray *CVA) {
 void PowerPCAsmPrinter::emitGlobalConstant(const Constant *CV) {  
   const TargetData &TD = TM.getTargetData();
 
-  if (const ConstantArray *CVA = dyn_cast<ConstantArray>(CV)) {
-    if (isStringCompatible(CVA)) {
-      O << "\t.ascii ";
+  if (CV->isNullValue()) {
+    O << "\t.space\t" << TD.getTypeSize(CV->getType()) << "\n";
+    return;
+  } else if (const ConstantArray *CVA = dyn_cast<ConstantArray>(CV)) {
+    if (CVA->isString()) {
+      O << "\t.ascii\t";
       printAsCString(O, CVA);
       O << "\n";
     } else { // Not a string.  Print the values in successive locations
-      for (unsigned i=0, e = CVA->getNumOperands(); i != e; i++)
+      for (unsigned i = 0, e = CVA->getNumOperands(); i != e; ++i)
         emitGlobalConstant(CVA->getOperand(i));
     }
     return;
@@ -166,7 +169,7 @@ void PowerPCAsmPrinter::emitGlobalConstant(const Constant *CV) {
     // Print the fields in successive locations. Pad to align if needed!
     const StructLayout *cvsLayout = TD.getStructLayout(CVS->getType());
     unsigned sizeSoFar = 0;
-    for (unsigned i = 0, e = CVS->getNumOperands(); i != e; i++) {
+    for (unsigned i = 0, e = CVS->getNumOperands(); i != e; ++i) {
       const Constant* field = CVS->getOperand(i);
 
       // Check if padding is needed and insert one or more 0s.
@@ -243,12 +246,7 @@ void PowerPCAsmPrinter::emitGlobalConstant(const Constant *CV) {
   case Type::FloatTyID: case Type::DoubleTyID:
     assert (0 && "Should have already output floating point constant.");
   default:
-    if (CV == Constant::getNullValue(type)) {  // Zero initializer?
-      O << ".space\t" << TD.getTypeSize(type) << "\n";      
-      return;
-    }
-    std::cerr << "Can't handle printing: " << *CV;
-    abort();
+    assert (0 && "Can't handle printing this type of thing");
     break;
   }
   O << "\t";