X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/27c7fbea86b5184b440537f27dfc0cfe726c6400..7850af521872d660aa8031944f8e6abe2558461e:/src/smpi/replace_globals.cocci diff --git a/src/smpi/replace_globals.cocci b/src/smpi/replace_globals.cocci index a49237c80b..d23bacfd3f 100644 --- a/src/smpi/replace_globals.cocci +++ b/src/smpi/replace_globals.cocci @@ -1,24 +1,32 @@ +// FIXME: problems +// - does not want to match dynamic arrays... +// - does not match array initializers + // Function prototype looks like variable dec, but has parentheses @funcproto@ type T; -identifier f; +identifier func; position p; @@ -T f@p(...); +T@p func(...); // Define a local variable as one whose declaration is encased in brackets @localvardecl@ type T; -identifier a; +identifier var; position p; expression E; @@ { <... ( - T a@p; +T@p +var +; | - T a@p = E; +T@p +var = E +; ) ...> } @@ -27,34 +35,50 @@ expression E; // prototype @globalvardecl@ type T; -identifier b; +identifier var; position p != { localvardecl.p, funcproto.p }; -expression E; +expression value; +constant size; @@ ( --T -+T* -b@p -+ = SMPI_INITIALIZE_GLOBAL(T) +T@p +- var ++ *var = SMPI_INITIALIZE_GLOBAL(T) ; | --T -+T* -b@p = -+ SMPI_INITIALIZE_AND_SET_GLOBAL(T, -E -+) +T@p +- var = value ++ *var = SMPI_INITIALIZE_AND_SET_GLOBAL(T, value) +; +| +T@p +- var[] ++ *var[] = SMPI_INITIALIZE_GLOBAL_ARRAY(T, size) +; +| +T@p +- var[size] ++ *var[] = SMPI_INITIALIZE_GLOBAL_STATIC_ARRAY(T, size) +; +| +T@p +- var[size] = { ... } ++ *var[] = SMPI_INITIALIZE_AND_SET_GLOBAL_STATIC_ARRAY(T, size) ; ) @rewritelocalaccess@ -local idexpression x; -identifier globalvardecl.b; +local idexpression lvar; +identifier globalvardecl.var; @@ +{ +<... ( -x +lvar | +SMPI_GLOBAL_VAR_LOCAL_ACCESS( -b +var +) ) +...> +}