aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDale Johannesen <dalej@apple.com>2010-10-22 21:07:10 +0000
committerDale Johannesen <dalej@apple.com>2010-10-22 21:07:10 +0000
commitcee55018570c0c46262c6e4ef7beaa707c93fc86 (patch)
tree350ab72c9fb5f36880215254f4131d62a07f1688
parent1fb0caaa7bef765b85972274e3b434af2572c141 (diff)
Change handling of inline asm 'p' constraint to match llvm-gcc.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117149 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/Basic/TargetInfo.h3
-rw-r--r--lib/Basic/Targets.cpp2
2 files changed, 5 insertions, 0 deletions
diff --git a/include/clang/Basic/TargetInfo.h b/include/clang/Basic/TargetInfo.h
index 99f5bd8628..a00cc0d07c 100644
--- a/include/clang/Basic/TargetInfo.h
+++ b/include/clang/Basic/TargetInfo.h
@@ -356,6 +356,9 @@ public:
unsigned NumOutputs, unsigned &Index) const;
virtual std::string convertConstraint(const char Constraint) const {
+ // 'p' defaults to 'r', but can be overridden by targets.
+ if (Constraint == 'p')
+ return std::string("r");
return std::string(1, Constraint);
}
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
index b58f067e2b..9afef32f05 100644
--- a/lib/Basic/Targets.cpp
+++ b/lib/Basic/Targets.cpp
@@ -1315,6 +1315,8 @@ X86TargetInfo::convertConstraint(const char Constraint) const {
case 'd': return std::string("{dx}");
case 'S': return std::string("{si}");
case 'D': return std::string("{di}");
+ case 'p': // address
+ return std::string("im");
case 't': // top of floating point stack.
return std::string("{st}");
case 'u': // second from top of floating point stack.