brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · b8f079a Raw
48 lines · cpp
1// RUN: %clang_analyze_cc1 -analyzer-checker=optin.mpi.MPI-Checker -verify %s2 3#include "MPIMock.h"4 5// Use MPI-Checker to test 'getDescriptiveName', as the checker uses the6// function for diagnostics.7void testGetDescriptiveName() {8  int rank = 0;9  MPI_Comm_rank(MPI_COMM_WORLD, &rank);10  MPI_Request sendReq1;11  MPI_Wait(&sendReq1, MPI_STATUS_IGNORE); // expected-warning{{Request 'sendReq1' has no matching nonblocking call.}}12}13 14void testGetDescriptiveName2() {15  int rank = 0;16  MPI_Comm_rank(MPI_COMM_WORLD, &rank);17  MPI_Request sendReq1[10][10][10];18  MPI_Wait(&sendReq1[1][7][9], MPI_STATUS_IGNORE); // expected-warning{{Request 'sendReq1[1][7][9]' has no matching nonblocking call.}}19}20 21void testGetDescriptiveName3() {22  int rank = 0;23  MPI_Comm_rank(MPI_COMM_WORLD, &rank);24  typedef struct { MPI_Request req; } ReqStruct;25  ReqStruct rs;26  MPI_Request *r = &rs.req;27  MPI_Wait(r, MPI_STATUS_IGNORE); // expected-warning{{Request 'rs.req' has no matching nonblocking call.}}28}29 30void testGetDescriptiveName4() {31  int rank = 0;32  MPI_Comm_rank(MPI_COMM_WORLD, &rank);33  typedef struct { MPI_Request req[2][2]; } ReqStruct;34  ReqStruct rs;35  MPI_Request *r = &rs.req[0][1];36  MPI_Wait(r, MPI_STATUS_IGNORE); // expected-warning{{Request 'rs.req[0][1]' has no matching nonblocking call.}}37}38 39void testGetDescriptiveName5() {40  int rank = 0;41  MPI_Comm_rank(MPI_COMM_WORLD, &rank);42  typedef struct { MPI_Request req; } ReqStructInner;43  typedef struct  { ReqStructInner req; } ReqStruct;44  ReqStruct rs;45  MPI_Request *r = &rs.req.req;46  MPI_Wait(r, MPI_STATUS_IGNORE); // expected-warning{{Request 'rs.req.req' has no matching nonblocking call.}}47}48