1 // 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 4 struct Foo { 5 static int *ptr; 6 static int a, b; 7 struct Bar { 8 static int *ptr; 9 }; 10 }; 11 12 void 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}"() 23 // 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}"() 26 } 27 28 int gvar = 10; 29 void 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 } 37