brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 02ba0d8 Raw
56 lines · cpp
1// RUN: %clang_cc1 -emit-llvm -triple x86_64-pc-linux-gnu %s -o - -std=c++11 | FileCheck %s2 3volatile int g1;4struct S {5  volatile int a;6} g2;7 8volatile int& refcall();9 10// CHECK: define{{.*}} void @_Z2f1PViPV1S11void f1(volatile int *x, volatile S* s) {12  // We should perform the load in these cases.13  // CHECK: load volatile i32, ptr14  (*x);15  // CHECK: load volatile i32, ptr16  __extension__ g1;17  // CHECK: load volatile i32, ptr18  s->a;19  // CHECK: load volatile i32, ptr20  g2.a;21  // CHECK: load volatile i32, ptr22  s->*(&S::a);23  // CHECK: load volatile i32, ptr24  // CHECK: load volatile i32, ptr25  x[0], 1 ? x[0] : *x;26 27  // CHECK: load volatile i32, ptr28  // CHECK: load volatile i32, ptr29  // CHECK: load volatile i32, ptr30  *x ?: *x;31 32  // CHECK: load volatile i32, ptr33  ({ *x; });34 35  // CHECK-NOT: load volatile36  // CHECK: ret37}38 39// CHECK: define{{.*}} void @_Z2f2PVi40// CHECK-NOT: load volatile41// CHECK: ret42void f2(volatile int *x) {43  // We shouldn't perform the load in these cases.44  refcall();45  1 ? refcall() : *x;46}47 48// CHECK: define{{.*}} void @_Z2f3v()49// CHECK-NOT: load50// CHECK-NOT: memcpy51 52void f3(void) {53  volatile char a[10];54  a;55}56