diff options
author | Tim Northover <Tim.Northover@arm.com> | 2013-02-07 15:39:16 +0000 |
---|---|---|
committer | Tim Northover <Tim.Northover@arm.com> | 2013-02-07 15:39:16 +0000 |
commit | 51dbecf89c8cc453964a3d831ceea3bca1a25cb5 (patch) | |
tree | 44838aa79fc4f0b700756a13d4e047822cb9cd64 | |
parent | e8d3cf009f78dfdd9e498fe6a57cfede6f1486ad (diff) |
FileCheckize volatile test
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174627 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | test/CodeGen/volatile.c | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/test/CodeGen/volatile.c b/test/CodeGen/volatile.c index 6caf7119e0..b028635344 100644 --- a/test/CodeGen/volatile.c +++ b/test/CodeGen/volatile.c @@ -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 } |