fixes inconsistencies with the tagof operator
The standalone tagof operator tries to export tall tags which it works with. The tagof operator when used as a default argument checks if the tag is zero before exporting. As the zero tag identifier cannot be exported (even if its `PUBLICTAG` bit is set), it makes sense to use `0` as tag identifier instead of `0 | PUBLICTAG`. This commit changes the standalone tagof operator behaviour so that the zero tag identifier does not get its `PUBLICTAG` bit set.
This commit is contained in:
parent
a47bd9de76
commit
5a0fd0fda1
@ -1424,10 +1424,13 @@ static int hier2(value *lval)
|
|||||||
else if (level==sym->dim.array.level+1 && idxsym!=NULL)
|
else if (level==sym->dim.array.level+1 && idxsym!=NULL)
|
||||||
tag=idxsym->x.tags.index;
|
tag=idxsym->x.tags.index;
|
||||||
} /* if */
|
} /* if */
|
||||||
exporttag(tag);
|
if (tag!=0) {
|
||||||
|
exporttag(tag);
|
||||||
|
tag |= PUBLICTAG;
|
||||||
|
} /* if */
|
||||||
clear_value(lval);
|
clear_value(lval);
|
||||||
lval->ident=iCONSTEXPR;
|
lval->ident=iCONSTEXPR;
|
||||||
lval->constval=tag | PUBLICTAG;
|
lval->constval=tag;
|
||||||
ldconst(lval->constval,sPRI);
|
ldconst(lval->constval,sPRI);
|
||||||
while (paranthese--)
|
while (paranthese--)
|
||||||
needtoken(')');
|
needtoken(')');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user