Eliminate the isStringCompatible function, using ConstantArray::isString.
authorChris Lattner <sabre@nondot.org>
Wed, 14 Jan 2004 17:14:42 +0000 (17:14 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 14 Jan 2004 17:14:42 +0000 (17:14 +0000)
It's not clear why the code was looking for signed chars < 0, but it can't
matter to the assembler anyway, so the check goes away.

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

lib/Target/X86/Printer.cpp
lib/Target/X86/X86AsmPrinter.cpp

index 4d586c01f5cbf8ccf28bac11fb2805dc2dfed9b1..5ac5c78f5c57648445ee3a9836bceba57a2760f1 100644 (file)
@@ -95,21 +95,6 @@ FunctionPass *createX86CodePrinterPass(std::ostream &o,TargetMachine &tm){
   return new Printer(o, tm);
 }
 
-/// isStringCompatible - Can we treat the specified array as a string?
-/// Only if it is an array of ubytes or non-negative sbytes.
-///
-static bool isStringCompatible(const ConstantArray *CVA) {
-  const Type *ETy = cast<ArrayType>(CVA->getType())->getElementType();
-  if (ETy == Type::UByteTy) return true;
-  if (ETy != Type::SByteTy) return false;
-
-  for (unsigned i = 0; i < CVA->getNumOperands(); ++i)
-    if (cast<ConstantSInt>(CVA->getOperand(i))->getValue() < 0)
-      return false;
-
-  return true;
-}
-
 /// toOctal - Convert the low order bits of X into an octal digit.
 ///
 static inline char toOctal(int X) {
@@ -120,10 +105,10 @@ static inline char toOctal(int X) {
 /// string, only if the predicate isStringCompatible is true.
 ///
 static void printAsCString(std::ostream &O, const ConstantArray *CVA) {
-  assert(isStringCompatible(CVA) && "Array is not string compatible!");
+  assert(CVA->isString() && "Array is not string compatible!");
 
   O << "\"";
-  for (unsigned i = 0; i < CVA->getNumOperands(); ++i) {
+  for (unsigned i = 0; i != CVA->getNumOperands(); ++i) {
     unsigned char C = cast<ConstantInt>(CVA->getOperand(i))->getRawValue();
 
     if (C == '"') {
@@ -230,7 +215,7 @@ void Printer::emitGlobalConstant(const Constant *CV) {
     O << "\t.zero\t " << TD.getTypeSize(CV->getType()) << "\n";      
     return;
   } else if (const ConstantArray *CVA = dyn_cast<ConstantArray>(CV)) {
-    if (isStringCompatible(CVA)) {
+    if (CVA->isString()) {
       O << "\t.ascii\t";
       printAsCString(O, CVA);
       O << "\n";
index 4d586c01f5cbf8ccf28bac11fb2805dc2dfed9b1..5ac5c78f5c57648445ee3a9836bceba57a2760f1 100644 (file)
@@ -95,21 +95,6 @@ FunctionPass *createX86CodePrinterPass(std::ostream &o,TargetMachine &tm){
   return new Printer(o, tm);
 }
 
-/// isStringCompatible - Can we treat the specified array as a string?
-/// Only if it is an array of ubytes or non-negative sbytes.
-///
-static bool isStringCompatible(const ConstantArray *CVA) {
-  const Type *ETy = cast<ArrayType>(CVA->getType())->getElementType();
-  if (ETy == Type::UByteTy) return true;
-  if (ETy != Type::SByteTy) return false;
-
-  for (unsigned i = 0; i < CVA->getNumOperands(); ++i)
-    if (cast<ConstantSInt>(CVA->getOperand(i))->getValue() < 0)
-      return false;
-
-  return true;
-}
-
 /// toOctal - Convert the low order bits of X into an octal digit.
 ///
 static inline char toOctal(int X) {
@@ -120,10 +105,10 @@ static inline char toOctal(int X) {
 /// string, only if the predicate isStringCompatible is true.
 ///
 static void printAsCString(std::ostream &O, const ConstantArray *CVA) {
-  assert(isStringCompatible(CVA) && "Array is not string compatible!");
+  assert(CVA->isString() && "Array is not string compatible!");
 
   O << "\"";
-  for (unsigned i = 0; i < CVA->getNumOperands(); ++i) {
+  for (unsigned i = 0; i != CVA->getNumOperands(); ++i) {
     unsigned char C = cast<ConstantInt>(CVA->getOperand(i))->getRawValue();
 
     if (C == '"') {
@@ -230,7 +215,7 @@ void Printer::emitGlobalConstant(const Constant *CV) {
     O << "\t.zero\t " << TD.getTypeSize(CV->getType()) << "\n";      
     return;
   } else if (const ConstantArray *CVA = dyn_cast<ConstantArray>(CV)) {
-    if (isStringCompatible(CVA)) {
+    if (CVA->isString()) {
       O << "\t.ascii\t";
       printAsCString(O, CVA);
       O << "\n";