if (!val)
return 0;
- if (SPEC_SCLS(val->etype) != S_LITERAL) {
+ if (val->etype && SPEC_SCLS(val->etype) != S_LITERAL) {
werror(E_CONST_EXPECTED,val->name);
return 0;
}
sprintf(val->name,"(%s + %d)",buffer,
(int)AST_LIT_VALUE(arrExpr->right)*size);
- val->type = newLink();
+ val->type = newLink();
if (SPEC_SCLS(arrExpr->left->etype) == S_CODE) {
DCL_TYPE(val->type) = CPOINTER ;
- DCL_PTR_CONST(val->type) = 1;
+ DCL_PTR_CONST(val->type) = port->mem.code_ro;
}
else
if (SPEC_SCLS(arrExpr->left->etype) == S_XDATA)
if (SPEC_SCLS(arrExpr->left->etype) == S_IDATA)
DCL_TYPE(val->type) = IPOINTER ;
else
- DCL_TYPE(val->type) = POINTER ;
+ if (SPEC_SCLS(arrExpr->left->etype) == S_EEPROM)
+ DCL_TYPE(val->type) = EEPPOINTER ;
+ else
+ DCL_TYPE(val->type) = POINTER ;
val->type->next = arrExpr->left->ftype;
val->etype = getSpec(val->type);
return val;
val->type = newLink();
if (SPEC_SCLS(structT->etype) == S_CODE) {
DCL_TYPE(val->type) = CPOINTER ;
- DCL_PTR_CONST(val->type) = 1;
+ DCL_PTR_CONST(val->type) = port->mem.code_ro;
}
else
if (SPEC_SCLS(structT->etype) == S_XDATA)
if (SPEC_SCLS(structT->etype) == S_IDATA)
DCL_TYPE(val->type) = IPOINTER ;
else
- DCL_TYPE(val->type) = POINTER ;
+ if (SPEC_SCLS(structT->etype) == S_EEPROM)
+ DCL_TYPE(val->type) = EEPPOINTER ;
+ else
+ DCL_TYPE(val->type) = POINTER ;
val->type->next = sym->type;
val->etype = getSpec(val->type);
return val;