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