blob: 7e11700e1a901730f5f2086d12056e923fcc4bca [file] [log] [blame]
Chad Rosier148bab22013-04-02 20:03:29 +00001// REQUIRES: x86-64-registered-target
2// RUN: %clang_cc1 -x c++ %s -triple i386-apple-darwin10 -O0 -fasm-blocks -emit-llvm -o - | FileCheck %s
3
4struct Foo {
5 static int *ptr;
6 static int a, b;
7 struct Bar {
8 static int *ptr;
9 };
10};
11
12void t1() {
13 Foo::ptr = (int *)0xDEADBEEF;
14 Foo::Bar::ptr = (int *)0xDEADBEEF;
15 __asm mov eax, Foo::ptr
16 __asm mov eax, Foo::Bar::ptr
17 __asm mov eax, [Foo::ptr]
18 __asm mov eax, dword ptr [Foo::ptr]
19 __asm mov eax, dword ptr [Foo::ptr]
20// CHECK: @_Z2t1v
21// CHECK: call void asm sideeffect inteldialect "mov eax, Foo::ptr", "~{eax},~{dirflag},~{fpsr},~{flags}"()
22// CHECK: call void asm sideeffect inteldialect "mov eax, Foo::Bar::ptr", "~{eax},~{dirflag},~{fpsr},~{flags}"()
Chad Rosier0f9790b2013-04-11 21:49:48 +000023// CHECK: call void asm sideeffect inteldialect "mov eax, Foo::ptr", "~{eax},~{dirflag},~{fpsr},~{flags}"()
24// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr Foo::ptr", "~{eax},~{dirflag},~{fpsr},~{flags}"()
25// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr Foo::ptr", "~{eax},~{dirflag},~{fpsr},~{flags}"()
Chad Rosier148bab22013-04-02 20:03:29 +000026}
Chad Rosierdbcfa8b2013-04-11 23:37:53 +000027
28int gvar = 10;
29void t2() {
30 int lvar = 10;
31 __asm mov eax, offset Foo::ptr
32 __asm mov eax, offset Foo::Bar::ptr
33// CHECK: t2
34// CHECK: call void asm sideeffect inteldialect "mov eax, Foo::ptr", "~{eax},~{dirflag},~{fpsr},~{flags}"()
35// CHECK: call void asm sideeffect inteldialect "mov eax, Foo::Bar::ptr", "~{eax},~{dirflag},~{fpsr},~{flags}"()
36}