sym_link *lnk = $2 ;
while (lnk && !IS_SPEC(lnk->next))
lnk = lnk->next;
- lnk->next = mergeSpec($1,lnk->next, yytext);
+ lnk->next = mergeSpec($1,lnk->next, "storage_class_specifier declaration_specifiers - skipped");
$$ = $2 ;
}
else
- $$ = mergeSpec($1,$2, yytext);
+ $$ = mergeSpec($1,$2, "storage_class_specifier declaration_specifiers");
}
| type_specifier { $$ = $1; }
| type_specifier declaration_specifiers {
sym_link *lnk = $2 ;
while (lnk && !IS_SPEC(lnk->next))
lnk = lnk->next;
- lnk->next = mergeSpec($1,lnk->next, yytext);
+ lnk->next = mergeSpec($1,lnk->next, "type_specifier declaration_specifiers - skipped");
$$ = $2 ;
}
else
- $$ = mergeSpec($1,$2, yytext);
+ $$ = mergeSpec($1,$2, "type_specifier declaration_specifiers");
}
;
| CODE {
$$ = newLink (SPECIFIER) ;
SPEC_SCLS($$) = S_CODE ;
+ if (port->mem.code_ro) {
+ SPEC_CONST($$) = 1;
+ }
}
| EEPROM {
$$ = newLink (SPECIFIER) ;
sym_link *lnk = $2 ;
while (lnk && !IS_SPEC(lnk->next))
lnk = lnk->next;
- lnk->next = mergeSpec($1,lnk->next, "type_specifier_list");
+ lnk->next = mergeSpec($1,lnk->next, "type_specifier_list type_specifier skipped");
$$ = $2 ;
}
else
- $$ = mergeSpec($1,$2, "type_specifier_list");
+ $$ = mergeSpec($1,$2, "type_specifier_list type_specifier");
}
;
break;
}
/* the storage class of type ends here */
- SPEC_SCLS (type) =
- SPEC_CONST (type) =
- SPEC_VOLATILE (type) = 0;
+ SPEC_SCLS (type) = 0;
}
/* now change all the remaining unknown pointers
sym_link *
mergeSpec (sym_link * dest, sym_link * src, char *name)
{
- sym_link *symlink=dest;
-
if (!IS_SPEC(dest) || !IS_SPEC(src)) {
#if 0
werror (E_INTERNAL_ERROR, __FILE__, __LINE__, "cannot merge declarator");
FUNC_INTNO(dest) |= FUNC_INTNO(src);
FUNC_REGBANK(dest) |= FUNC_REGBANK(src);
- return symlink;
+ return dest;
}
/*------------------------------------------------------------------*/