r202866 - Tests for LLVM MS inline asm change r202865
Reid Kleckner
reid at kleckner.net
Tue Mar 4 09:57:56 PST 2014
Author: rnk
Date: Tue Mar 4 11:57:56 2014
New Revision: 202866
URL: http://llvm.org/viewvc/llvm-project?rev=202866&view=rev
Log:
Tests for LLVM MS inline asm change r202865
Modified:
cfe/trunk/test/Sema/ms-inline-asm.c
Modified: cfe/trunk/test/Sema/ms-inline-asm.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/ms-inline-asm.c?rev=202866&r1=202865&r2=202866&view=diff
==============================================================================
--- cfe/trunk/test/Sema/ms-inline-asm.c (original)
+++ cfe/trunk/test/Sema/ms-inline-asm.c Tue Mar 4 11:57:56 2014
@@ -50,3 +50,28 @@ void rdar15318432(void) {
and ecx, ~15
}
}
+
+static int global;
+
+int t2(int *arr, int i) {
+ __asm {
+ mov eax, arr;
+ mov eax, arr[0];
+ mov eax, arr[1 + 2];
+ mov eax, arr[1 + (2 * 5) - 3 + 1<<1];
+ }
+
+ // expected-error at +1 {{cannot use base register with variable reference}}
+ __asm mov eax, arr[ebp + 1 + (2 * 5) - 3 + 1<<1]
+ // expected-error at +1 {{cannot use index register with variable reference}}
+ __asm mov eax, arr[esi * 4]
+ // expected-error at +1 {{cannot use more than one symbol in memory operand}}
+ __asm mov eax, arr[i]
+ // expected-error at +1 {{cannot use more than one symbol in memory operand}}
+ __asm mov eax, global[i]
+
+ // FIXME: Why don't we diagnose this?
+ // expected-Xerror at +1 {{cannot reference multiple local variables in assembly operand}}
+ //__asm mov eax, [arr + i];
+ return 0;
+}
More information about the cfe-commits
mailing list