Convert x86 target specific inline asm constraints to LLVM.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47609 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/CodeGen/CGStmt.cpp b/CodeGen/CGStmt.cpp
index 5ef8b96..0da91da 100644
--- a/CodeGen/CGStmt.cpp
+++ b/CodeGen/CGStmt.cpp
@@ -594,14 +594,14 @@
   return Result;
 }
 
-static std::string SimplifyConstraint(const char* Constraint)
-{
+static std::string SimplifyConstraint(const char* Constraint,
+                                      TargetInfo &Target) {
   std::string Result;
   
   while (*Constraint) {
     switch (*Constraint) {
     default:
-      Result += *Constraint;
+      Result += Target.convertConstraint(*Constraint);
       break;
     // Ignore these
     case '*':
@@ -648,7 +648,7 @@
     assert(result && "Failed to parse output constraint");
     
     // Simplify the output constraint.
-    OutputConstraint = SimplifyConstraint(OutputConstraint.c_str() + 1);
+    OutputConstraint = SimplifyConstraint(OutputConstraint.c_str() + 1, Target);
     
     LValue Dest = EmitLValue(S.getOutputExpr(i));
     const llvm::Type *DestValueType = 
@@ -713,7 +713,7 @@
       Constraints += ',';
     
     // Simplify the input constraint.
-    InputConstraint = SimplifyConstraint(InputConstraint.c_str());
+    InputConstraint = SimplifyConstraint(InputConstraint.c_str(), Target);
 
     llvm::Value *Arg;