diff options
Diffstat (limited to 'clang/test/Analysis/MemRegion.cpp')
-rw-r--r-- | clang/test/Analysis/MemRegion.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/clang/test/Analysis/MemRegion.cpp b/clang/test/Analysis/MemRegion.cpp new file mode 100644 index 00000000000..992b7f1f976 --- /dev/null +++ b/clang/test/Analysis/MemRegion.cpp @@ -0,0 +1,47 @@ +// RUN: %clang_cc1 -analyze -analyzer-checker=optin.mpi.MPI-Checker -verify %s + +#include "MPIMock.h" + +// Use MPI-Checker to test 'getDescriptiveName', as the checker uses the +// function for diagnostics. +void testGetDescriptiveName() { + int rank = 0; + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + MPI_Request sendReq1; + MPI_Wait(&sendReq1, MPI_STATUS_IGNORE); // expected-warning{{Request 'sendReq1' has no matching nonblocking call.}} +} + +void testGetDescriptiveName2() { + int rank = 0; + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + MPI_Request sendReq1[10][10][10]; + MPI_Wait(&sendReq1[1][7][9], MPI_STATUS_IGNORE); // expected-warning{{Request 'sendReq1[1][7][9]' has no matching nonblocking call.}} +} + +void testGetDescriptiveName3() { + int rank = 0; + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + typedef struct { MPI_Request req; } ReqStruct; + ReqStruct rs; + MPI_Request *r = &rs.req; + MPI_Wait(r, MPI_STATUS_IGNORE); // expected-warning{{Request 'rs.req' has no matching nonblocking call.}} +} + +void testGetDescriptiveName4() { + int rank = 0; + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + typedef struct { MPI_Request req[2][2]; } ReqStruct; + ReqStruct rs; + MPI_Request *r = &rs.req[0][1]; + MPI_Wait(r, MPI_STATUS_IGNORE); // expected-warning{{Request 'rs.req[0][1]' has no matching nonblocking call.}} +} + +void testGetDescriptiveName5() { + int rank = 0; + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + typedef struct { MPI_Request req; } ReqStructInner; + typedef struct { ReqStructInner req; } ReqStruct; + ReqStruct rs; + MPI_Request *r = &rs.req.req; + MPI_Wait(r, MPI_STATUS_IGNORE); // expected-warning{{Request 'rs.req.req' has no matching nonblocking call.}} +} |