Make identity default, and fix PR1020
authorAndrew Lenharth <andrewl@lenharth.org>
Tue, 28 Nov 2006 22:25:32 +0000 (22:25 +0000)
committerAndrew Lenharth <andrewl@lenharth.org>
Tue, 28 Nov 2006 22:25:32 +0000 (22:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31979 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/CBackend/CBackend.cpp
lib/Target/CBackend/Writer.cpp

index 18c4d064e33afda0f8106d0a480c114fb391b190..89ed2ad021a95d0fcea675c66ea8ef245c7f1c7d 100644 (file)
@@ -2265,10 +2265,6 @@ std::string CWriter::InterpretASMConstraint(InlineAsm::ConstraintInfo& c) {
 
   assert(c.Codes.size() == 1 && "Too many asm constraint codes to handle");
 
-  //catch numeric constraints
-  if (c.Codes[0].find_first_not_of("0123456789") >= c.Codes[0].size())
-    return c.Codes[0];
-
   const char** table = 0;
   
   //Grab the translation table from TargetAsmInfo if it exists
@@ -2291,8 +2287,8 @@ std::string CWriter::InterpretASMConstraint(InlineAsm::ConstraintInfo& c) {
     if (c.Codes[0] == table[i])
       return table[i+1];
 
-  assert(0 && "Unknown Asm Constraint");
-  return "";
+  //default is identity
+  return c.Codes[0];
 }
 
 //TODO: import logic from AsmPrinter.cpp
@@ -2383,7 +2379,7 @@ void CWriter::visitInlineAsm(CallInst &CI) {
     if (I + 1 != E)
       Out << ",";
   }
-  Out << "\n        :" << Clobber.substr(1) << ")\n";
+  Out << "\n        :" << (Clobber.size() ? Clobber.substr(1) : "") << ")\n";
 }
 
 void CWriter::visitMallocInst(MallocInst &I) {
index 18c4d064e33afda0f8106d0a480c114fb391b190..89ed2ad021a95d0fcea675c66ea8ef245c7f1c7d 100644 (file)
@@ -2265,10 +2265,6 @@ std::string CWriter::InterpretASMConstraint(InlineAsm::ConstraintInfo& c) {
 
   assert(c.Codes.size() == 1 && "Too many asm constraint codes to handle");
 
-  //catch numeric constraints
-  if (c.Codes[0].find_first_not_of("0123456789") >= c.Codes[0].size())
-    return c.Codes[0];
-
   const char** table = 0;
   
   //Grab the translation table from TargetAsmInfo if it exists
@@ -2291,8 +2287,8 @@ std::string CWriter::InterpretASMConstraint(InlineAsm::ConstraintInfo& c) {
     if (c.Codes[0] == table[i])
       return table[i+1];
 
-  assert(0 && "Unknown Asm Constraint");
-  return "";
+  //default is identity
+  return c.Codes[0];
 }
 
 //TODO: import logic from AsmPrinter.cpp
@@ -2383,7 +2379,7 @@ void CWriter::visitInlineAsm(CallInst &CI) {
     if (I + 1 != E)
       Out << ",";
   }
-  Out << "\n        :" << Clobber.substr(1) << ")\n";
+  Out << "\n        :" << (Clobber.size() ? Clobber.substr(1) : "") << ")\n";
 }
 
 void CWriter::visitMallocInst(MallocInst &I) {