@@ -922,4 +922,100 @@ namespace GlobalArrays {
922922 sink (global_pointer_static_indirect_2); // clean: global_pointer_static_indirect_2 does not have 2 indirections
923923 indirect_sink (global_pointer_static_indirect_2); // clean: global_pointer_static_indirect_2 does not have 2 indirections
924924 }
925+ }
926+
927+ namespace globals_without_explicit_def {
928+ int * global_int_ptr;
929+
930+ void set (int * p) { // $ ast-def=p ir-def=*p
931+ *p = source ();
932+ }
933+
934+ void test1 () {
935+ set (global_int_ptr);
936+ indirect_sink (global_int_ptr); // $ ir,ast
937+ }
938+
939+ void test2 () {
940+ set (global_int_ptr);
941+ sink (*global_int_ptr); // $ ir MISSING: ast
942+ }
943+
944+ void calls_set () {
945+ set (global_int_ptr);
946+ }
947+
948+ void test3 () {
949+ calls_set ();
950+ indirect_sink (global_int_ptr); // $ MISSING: ast,ir
951+ }
952+
953+ void test4 () {
954+ calls_set ();
955+ sink (*global_int_ptr); // $ MISSING: ast,ir
956+ }
957+
958+ int ** global_int_ptr_ptr;
959+
960+ void set_indirect (int ** p) { // $ ast-def=p ir-def=*p ir-def=**p
961+ *p = indirect_source ();
962+ }
963+
964+ void test5 () {
965+ set_indirect (global_int_ptr_ptr);
966+ indirect_sink (global_int_ptr_ptr); // $ ir,ast
967+ sink (global_int_ptr_ptr); // $ SPURIOUS: ast
968+ }
969+
970+ void test6 () {
971+ set_indirect (global_int_ptr_ptr);
972+ indirect_sink (*global_int_ptr_ptr); // $ ir MISSING: ast
973+ sink (*global_int_ptr_ptr);
974+ indirect_sink (**global_int_ptr_ptr);
975+ sink (**global_int_ptr_ptr); // $ ir
976+ }
977+
978+ void calls_set_indirect () {
979+ set_indirect (global_int_ptr_ptr);
980+ }
981+
982+ void test7 () {
983+ calls_set_indirect ();
984+ indirect_sink (global_int_ptr_ptr); // $ MISSING: ast,ir
985+ sink (global_int_ptr_ptr); // $ MISSING: ast
986+ }
987+
988+ void test8 () {
989+ calls_set_indirect ();
990+ indirect_sink (*global_int_ptr_ptr); // $ MISSING: ast,ir
991+ sink (*global_int_ptr_ptr);
992+ indirect_sink (**global_int_ptr_ptr);
993+ sink (**global_int_ptr_ptr); // $ MISSING: ast,ir
994+ }
995+
996+ int global_int_array[10 ];
997+
998+ void test9 () {
999+ set (global_int_array);
1000+ indirect_sink (global_int_array); // $ ir,ast
1001+ }
1002+
1003+ void test10 () {
1004+ set (global_int_array);
1005+ sink (*global_int_array); // $ ir,ast
1006+ }
1007+
1008+ void calls_set_array () {
1009+ set (global_int_array);
1010+ }
1011+
1012+ void test11 () {
1013+ calls_set_array ();
1014+ indirect_sink (global_int_array); // $ MISSING: ast,ir
1015+ }
1016+
1017+ void test12 () {
1018+ calls_set_array ();
1019+ sink (*global_int_array); // $ MISSING: ast,ir
1020+ }
9251021}
0 commit comments