git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174627 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Tim Northover 2013-02-07 15:39:16 +00:00
Родитель e8d3cf009f
Коммит 51dbecf89c
1 изменённых файлов: 37 добавлений и 3 удалений

Просмотреть файл

@ -1,6 +1,4 @@
// RUN: %clang_cc1 -emit-llvm < %s -o %t
// RUN: grep volatile %t | count 28
// RUN: grep "memcpy.*, i1 true" %t | count 6
// RUN: %clang_cc1 -emit-llvm < %s | FileCheck %s
// The number 28 comes from the current codegen for volatile loads;
// if this number changes, it's not necessarily something wrong, but
@ -47,54 +45,90 @@ int main() {
// load
i=S;
i=vS;
// CHECK: load volatile
i=*pS;
i=*pvS;
// CHECK: load volatile
i=A[2];
i=vA[2];
// CHECK: load volatile
i=F.x;
i=vF.x;
// CHECK: load volatile
i=F2.x;
i=vF2.x;
// CHECK: load volatile
i=vpF2->x;
// CHECK: load volatile
i=F3.x.y;
i=vF3.x.y;
// CHECK: load volatile
i=BF.x;
i=vBF.x;
// CHECK: load volatile
i=V[3];
i=vV[3];
// CHECK: load volatile
i=VE.yx[1];
i=vVE.zy[1];
// CHECK: load volatile
i = aggFct().x; // Note: not volatile
i=vtS;
// CHECK: load volatile
// store
S=i;
vS=i;
// CHECK: store volatile
*pS=i;
*pvS=i;
// CHECK: store volatile
A[2]=i;
vA[2]=i;
// CHECK: store volatile
F.x=i;
vF.x=i;
// CHECK: store volatile
F2.x=i;
vF2.x=i;
// CHECK: store volatile
vpF2->x=i;
// CHECK: store volatile
vF3.x.y=i;
// CHECK: store volatile
BF.x=i;
vBF.x=i;
// CHECK: store volatile
V[3]=i;
vV[3]=i;
// CHECK: store volatile
vtS=i;
// CHECK: store volatile
// other ops:
++S;
++vS;
// CHECK: load volatile
// CHECK: store volatile
i+=S;
i+=vS;
// CHECK: load volatile
++vtS;
// CHECK: load volatile
// CHECK: store volatile
(void)vF2;
// From vF2 to a temporary
// CHECK: call void @llvm.memcpy{{.*}} i1 true
vF2 = vF2;
// vF2 to itself
// CHECK: call void @llvm.memcpy{{.*}} i1 true
vF2 = vF2 = vF2;
// vF2 to itself twice
// CHECK: call void @llvm.memcpy{{.*}} i1 true
// CHECK: call void @llvm.memcpy{{.*}} i1 true
vF2 = (vF2, vF2);
// vF2 to a temporary, then vF2 to itself
// CHECK: call void @llvm.memcpy{{.*}} i1 true
// CHECK: call void @llvm.memcpy{{.*}} i1 true
}