// REQUIRES: x86-registered-target

// RUN: %clang_cc1 -triple x86_64-pc-win32 -fasm-blocks -emit-llvm %s -o - | FileCheck %s
class t1 {
public:
  double a;
  void runc();
};

class t2 {
public:
  double a;
  void runc();
};

// CHECK: define dso_local void @"?runc@t2@@
void t2::runc() {
  double num = 0;
  __asm {
      mov rax,[this]
      // CHECK: [[THIS_ADDR_T2:%.+]] = alloca %class.t2*
      // CHECK: [[THIS1_T2:%.+]] = load %class.t2*, %class.t2** [[THIS_ADDR_T2]],
      // CHECK: call void asm sideeffect inteldialect "mov rax,qword ptr $1{{.*}}%class.t2* [[THIS1_T2]]
      mov rbx,[rax]
      mov num, rbx
	   };
}

// CHECK: define dso_local void @"?runc@t1@@
void t1::runc() {
  double num = 0;
  __asm {
       mov rax,[this]
       // CHECK: [[THIS_ADDR_T1:%.+]] = alloca %class.t1*
       // CHECK: [[THIS1_T1:%.+]] = load %class.t1*, %class.t1** [[THIS_ADDR_T1]],
       // CHECK: call void asm sideeffect inteldialect "mov rax,qword ptr $1{{.*}}%class.t1* [[THIS1_T1]]
        mov rbx,[rax]
        mov num, rbx
	   };
}

struct s {
  int a;
  // CHECK: define linkonce_odr dso_local void @"?func@s@@
  void func() {
    __asm mov rax, [this]
    // CHECK: [[THIS_ADDR_S:%.+]] = alloca %struct.s*
    // CHECK: [[THIS1_S:%.+]] = load %struct.s*, %struct.s** [[THIS_ADDR_S]],
    // CHECK: call void asm sideeffect inteldialect "mov rax, qword ptr $0{{.*}}%struct.s* [[THIS1_S]]
  }
} f3;

int main() {
  f3.func();
  f3.a=1;
  return 0;
}
