]> granicus.if.org Git - clang/commitdiff
[ms-inline asm] Test case for r178566.
authorChad Rosier <mcrosier@apple.com>
Tue, 2 Apr 2013 20:03:29 +0000 (20:03 +0000)
committerChad Rosier <mcrosier@apple.com>
Tue, 2 Apr 2013 20:03:29 +0000 (20:03 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178568 91177308-0d34-0410-b5e6-96231b3b80d8

test/CodeGen/ms-inline-asm.cpp [new file with mode: 0644]

diff --git a/test/CodeGen/ms-inline-asm.cpp b/test/CodeGen/ms-inline-asm.cpp
new file mode 100644 (file)
index 0000000..9c160be
--- /dev/null
@@ -0,0 +1,26 @@
+// REQUIRES: x86-64-registered-target
+// RUN: %clang_cc1 -x c++ %s -triple i386-apple-darwin10 -O0 -fasm-blocks -emit-llvm -o - | FileCheck %s
+
+struct Foo {
+  static int *ptr;
+  static int a, b;
+  struct Bar {
+    static int *ptr;
+  };
+};
+
+void t1() {
+  Foo::ptr = (int *)0xDEADBEEF;
+  Foo::Bar::ptr = (int *)0xDEADBEEF;
+  __asm mov eax, Foo::ptr
+  __asm mov eax, Foo::Bar::ptr
+  __asm mov eax, [Foo::ptr]
+  __asm mov eax, dword ptr [Foo::ptr]
+  __asm mov eax, dword ptr [Foo::ptr]
+// CHECK: @_Z2t1v
+// CHECK: call void asm sideeffect inteldialect "mov eax, Foo::ptr", "~{eax},~{dirflag},~{fpsr},~{flags}"()
+// CHECK: call void asm sideeffect inteldialect "mov eax, Foo::Bar::ptr", "~{eax},~{dirflag},~{fpsr},~{flags}"()
+// CHECK: call void asm sideeffect inteldialect "mov eax, [Foo::ptr]", "~{eax},~{dirflag},~{fpsr},~{flags}"()
+// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr [Foo::ptr]", "~{eax},~{dirflag},~{fpsr},~{flags}"()
+// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr [Foo::ptr]", "~{eax},~{dirflag},~{fpsr},~{flags}"()
+}