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;