@@ -540,6 +540,11 @@ def add_arg(arg, the_set):
540
540
the_set .add (self .arg .name )
541
541
elif isinstance (self .arg , str ):
542
542
the_set .add (self .arg )
543
+ elif isinstance (self .arg , NameSlice ):
544
+ assert isinstance (self .arg .name , str ), "Expected str in NameSlice arg"
545
+ the_set .add (self .arg .name )
546
+ # TODO: Create a good error check mechanism.
547
+ #else: ?
543
548
544
549
if self .name .startswith ("DIR.OMP" ):
545
550
assert not isinstance (self .arg , (ir .Var , str ))
@@ -1494,6 +1499,10 @@ def add_struct_tags(self, var_table):
1494
1499
struct_tags .append (openmp_tag (cur_tag .name + ".STRUCT" , cur_tag_var + "*data" , non_arg = True , omp_slice = (0 , size_var )))
1495
1500
struct_tags .append (openmp_tag ("QUAL.OMP.MAP.TO.STRUCT" , cur_tag_var + "*shape" , non_arg = True , omp_slice = (0 , 1 )))
1496
1501
struct_tags .append (openmp_tag ("QUAL.OMP.MAP.TO.STRUCT" , cur_tag_var + "*strides" , non_arg = True , omp_slice = (0 , 1 )))
1502
+ # Peel off NameSlice, it served its purpose and is not
1503
+ # needed by the rest of compilation.
1504
+ if isinstance (cur_tag .arg , NameSlice ):
1505
+ cur_tag .arg = cur_tag .arg .name
1497
1506
1498
1507
return struct_tags , extras_before
1499
1508
@@ -3125,6 +3134,9 @@ def get_explicit_vars(self, clauses):
3125
3134
for carg in carglist :
3126
3135
if config .DEBUG_OPENMP >= 1 :
3127
3136
print ("carg:" , carg , type (carg ), user_defined_var (carg ), is_dsa (c .name ))
3137
+ # Extract the var name from the NameSlice.
3138
+ if isinstance (carg , NameSlice ):
3139
+ carg = carg .name
3128
3140
#if isinstance(carg, str) and user_defined_var(carg) and is_dsa(c.name):
3129
3141
#if isinstance(carg, str) and user_defined_var(carg) and is_dsa(c.name):
3130
3142
if isinstance (carg , str ) and is_dsa (c .name ):
0 commit comments