summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2013-12-09 02:58:56 +0000
committerBill Wendling <isanbard@gmail.com>2013-12-09 02:58:56 +0000
commitdd6669dbb872a69a42a0d8fd77cd48a971cabcc9 (patch)
treec39b31440df6dec82bcf1142705a49197c067045
parent525f2f5437929a324a37697f2934fda78931c66a (diff)
downloadclang-dd6669dbb872a69a42a0d8fd77cd48a971cabcc9.tar.gz
clang-dd6669dbb872a69a42a0d8fd77cd48a971cabcc9.tar.bz2
clang-dd6669dbb872a69a42a0d8fd77cd48a971cabcc9.tar.xz
Merging r196724:
------------------------------------------------------------------------ r196724 | tnorthover | 2013-12-08 07:24:55 -0800 (Sun, 08 Dec 2013) | 5 lines ARM: teach Sema that "r" can match 64-bit values We already support using "r" on 64-bit values (a GPRPair is allocated), but Sema doesn't know this yet so issues a warning. This should fix it. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_34@196746 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Basic/Targets.cpp2
-rw-r--r--test/Sema/arm-asm.c5
2 files changed, 6 insertions, 1 deletions
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
index 4244edfbee..bccd0d72d8 100644
--- a/lib/Basic/Targets.cpp
+++ b/lib/Basic/Targets.cpp
@@ -4106,7 +4106,7 @@ public:
case 'r': {
switch (Modifier) {
default:
- return (isInOut || isOutput || Size <= 32);
+ return (isInOut || isOutput || Size <= 64);
case 'q':
// A register of size 32 cannot fit a vector type.
return false;
diff --git a/test/Sema/arm-asm.c b/test/Sema/arm-asm.c
index 3fc0eeb754..e48718b0a2 100644
--- a/test/Sema/arm-asm.c
+++ b/test/Sema/arm-asm.c
@@ -5,3 +5,8 @@ void f (void) {
asm volatile ("lw (r1), %0[val]": "=&b"(Val)); // expected-error {{invalid output constraint '=&b' in asm}}
return;
}
+
+void test_64bit_r(void) {
+ long long foo = 0, bar = 0;
+ asm volatile("INST %0, %1" : "=r"(foo) : "r"(bar));
+}