brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 4e9225a Raw
56 lines · cpp
1// REQUIRES: x86-registered-target2// RUN: %clang_cc1 %s -fasm-blocks -triple i386-apple-darwin10 -emit-llvm -o - | FileCheck %s3 4namespace x {5  enum { A = 12 };6  struct y_t {7    enum { A = 17 };8    int r;9  } y;10}11 12// CHECK-LABEL: t113void t1() {14  enum { A = 1 };15  // CHECK: call void asm16  // CHECK-SAME: mov eax, $$1217  __asm mov eax, x::A18  // CHECK-SAME: mov eax, $$1719  __asm mov eax, x::y_t::A20  // CHECK-NEXT: call void asm21  // CHECK-SAME: mov eax, $$122  __asm {mov eax, A}23}24 25// CHECK-LABEL: t226void t2() {27  enum { A = 1, B };28  // CHECK: call void asm29  // CHECK-SAME: mov eax, $$2130  __asm mov eax, (A + 9) * 2 + A31  // CHECK-SAME: mov eax, $$432  __asm mov eax, A << 233  // CHECK-SAME: mov eax, $$234  __asm mov eax, B & 335  // CHECK-SAME: mov eax, $$536  __asm mov eax, 3 + (B & 3)37  // CHECK-SAME: mov eax, $$838  __asm mov eax, 2 << A * B39}40 41// CHECK-LABEL: t342void t3() {43  int arr[4];44  enum { A = 4, B };45  // CHECK: call void asm46  // CHECK-SAME: mov eax, [eax + $$47]47  __asm { mov eax, [(x::A + 9) + A * B + 3 + 3 + eax] }48  // CHECK-NEXT: call void asm49  // CHECK-SAME: mov eax, dword ptr $0[$$4]50  __asm { mov eax, dword ptr [arr + A] }51  // CHECK-NEXT: call void asm52  // CHECK-SAME: mov eax, dword ptr $0[$$8]53  __asm { mov eax, dword ptr A[arr + A] }54}55 56