From 813dcd83a89bdf295fa128198c728bbe22399b2f Mon Sep 17 00:00:00 2001 From: Samuel-Oglegba Date: Mon, 18 Sep 2023 17:49:54 -0600 Subject: [PATCH 1/3] fix collect_global_read Uop cases --- lib/analysis.pt | 5 +-- .../test_collect_global_read_uop.pt | 44 +++++++++++++++++++ 2 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 test/libFunctions/test_collect_global_read_uop.pt diff --git a/lib/analysis.pt b/lib/analysis.pt index 0e3ff2b..380af35 100644 --- a/lib/analysis.pt +++ b/lib/analysis.pt @@ -283,10 +283,9 @@ switch (vars) case CODE.FunctionCall#(_,rhs) | CODE.FunctionCallParameter#(rhs) | CODE.VarConstructor#rhs | DeleteStmt#(rhs) | CODE.TypeInfo#(_,_,rhs) | CODE.VarInit#(rhs) | CODE.NewAlloc#(_,rhs) | CODE.ArraySubscript#rhs | CODE.CastExp#(_,rhs) | CODE.Return#(rhs) | - CODE.Uop#("!"|"*"|"++"|"--"|"&",rhs) | CODE.VarRef#(rhs,"++"|"--"): + CODE.Uop#("!"|"*"|"++"|"--"|"&"|"-"|"+"|"~",rhs) | CODE.VarRef#(rhs,"++"|"--"): collect_global_read(rhs) - case CODE.PtrAccess#(rhs=_,_) | CODE.Bop#(".",rhs=_,_) | CODE.Uop#("*",rhs=_) - | CODE.ObjAccess#(rhs=_,_) | CODE.ArrayAccess#(_,rhs=_) | CODE.Uop#(_,rhs=_): + case CODE.PtrAccess#(rhs=_,_) | CODE.Bop#(".",rhs=_,_) | CODE.ObjAccess#(rhs=_,_) | CODE.ArrayAccess#(_,rhs=_): BuildList(collect_global_read(rhs), op) case CODE.Assign#(op1,op2): switch (op1) { diff --git a/test/libFunctions/test_collect_global_read_uop.pt b/test/libFunctions/test_collect_global_read_uop.pt new file mode 100644 index 0000000..1d1d32c --- /dev/null +++ b/test/libFunctions/test_collect_global_read_uop.pt @@ -0,0 +1,44 @@ +include analysis.pi + +targetsize) - COMPAT_XT_ALIGN(csize);` ****> +result1 = collect_global_read(Return#(Bop#("+",FunctionCall#("XT_ALIGN", PtrAccess#("target","targetsize")), + Uop#("-",FunctionCall#( "COMPAT_XT_ALIGN","csize"))))); +expected_output1 = (("target"PtrAccess#("target","targetsize")) "csize"); +assert(expected_output1 : result1); + +<**** Uop#("+",_), where input is `return +x;` ****> +result2 = collect_global_read(Return#(Uop#("+","x"))); +expected_output2 = ("x"); +assert(expected_output2 : result2); + +<**** Uop#("~",_), where input is `return ~num;` ****> +result3 = collect_global_read(Return#(Uop#("~","num"))); +expected_output3 = ("num"); +assert(expected_output3 : result3); + +<**** Uop#("++",_), where input is `return ++count;` ****> +result4 = collect_global_read(Return#(Uop#("++","count"))); +expected_output4 = ("count"); +assert(expected_output4 : result4); + +<**** Uop#("--",_), where input is `return --count;` ****> +result5 = collect_global_read(Return#(Uop#("--","count"))); +expected_output5 = ("count"); +assert(expected_output5 : result5); + +<**** Uop#("*",_), where input is `int value = *ptr;` ****> +result6 = collect_global_read(DeclStmt#(TypeInfo#(IntType#("int"),"value",VarInit#(Uop#("*","ptr"))))); +expected_output6 = ("ptr"); +assert(expected_output6 : result6); + +<**** Uop#("!",_), where input is `int isFalse = !isTrue;` ****> +result7 = collect_global_read(DeclStmt#(TypeInfo#(IntType#("int"),"isFalse",VarInit#(Uop#("!","isTrue"))))); +expected_output7 = ("isTrue"); +assert(expected_output7 : result7); + +<**** Uop#("&",_), where input is `int* ptr = &x;` ****> +result8 = collect_global_read(DeclStmt#(TypeInfo#(PtrType#(IntType#("int")),"ptr",VarInit#(Uop#("&","x"))))); +expected_output8 = ("x"); +assert(expected_output8 : result8); +/> From f06a87f9bc2b601eaf96fcbb79d6f0b89714ce6a Mon Sep 17 00:00:00 2001 From: Samuel-Oglegba Date: Wed, 20 Sep 2023 15:10:21 -0600 Subject: [PATCH 2/3] fix Uop review --- lib/analysis.pt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/analysis.pt b/lib/analysis.pt index 380af35..f0fbe5d 100644 --- a/lib/analysis.pt +++ b/lib/analysis.pt @@ -283,9 +283,10 @@ switch (vars) case CODE.FunctionCall#(_,rhs) | CODE.FunctionCallParameter#(rhs) | CODE.VarConstructor#rhs | DeleteStmt#(rhs) | CODE.TypeInfo#(_,_,rhs) | CODE.VarInit#(rhs) | CODE.NewAlloc#(_,rhs) | CODE.ArraySubscript#rhs | CODE.CastExp#(_,rhs) | CODE.Return#(rhs) | - CODE.Uop#("!"|"*"|"++"|"--"|"&"|"-"|"+"|"~",rhs) | CODE.VarRef#(rhs,"++"|"--"): + CODE.Uop#("!"|"++"|"--"|"&"|"-"|"+"|"~",rhs) | CODE.VarRef#(rhs,"++"|"--"): collect_global_read(rhs) - case CODE.PtrAccess#(rhs=_,_) | CODE.Bop#(".",rhs=_,_) | CODE.ObjAccess#(rhs=_,_) | CODE.ArrayAccess#(_,rhs=_): + case CODE.PtrAccess#(rhs=_,_) | CODE.Bop#(".",rhs=_,_) | CODE.Uop#("*",rhs=_) + | CODE.ObjAccess#(rhs=_,_) | CODE.ArrayAccess#(_,rhs=_): BuildList(collect_global_read(rhs), op) case CODE.Assign#(op1,op2): switch (op1) { From 9c2578f5074879f90e57bcdab822947fc5a19179 Mon Sep 17 00:00:00 2001 From: Samuel-Oglegba Date: Wed, 20 Sep 2023 15:35:27 -0600 Subject: [PATCH 3/3] fix unit test --- test/libFunctions/test_collect_global_read_uop.pt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/libFunctions/test_collect_global_read_uop.pt b/test/libFunctions/test_collect_global_read_uop.pt index 1d1d32c..341c010 100644 --- a/test/libFunctions/test_collect_global_read_uop.pt +++ b/test/libFunctions/test_collect_global_read_uop.pt @@ -29,7 +29,7 @@ assert(expected_output5 : result5); <**** Uop#("*",_), where input is `int value = *ptr;` ****> result6 = collect_global_read(DeclStmt#(TypeInfo#(IntType#("int"),"value",VarInit#(Uop#("*","ptr"))))); -expected_output6 = ("ptr"); +expected_output6 = ("ptr"Uop#("*","ptr")); assert(expected_output6 : result6); <**** Uop#("!",_), where input is `int isFalse = !isTrue;` ****>