diff --git a/src/cc65/expr.c b/src/cc65/expr.c index 9c12741ec..506a963a6 100644 --- a/src/cc65/expr.c +++ b/src/cc65/expr.c @@ -4211,7 +4211,8 @@ ExprDesc NoCodeConstExpr (void (*Func) (ExprDesc*)) if (!ED_IsConst (&Expr) || !ED_CodeRangeIsEmpty (&Expr)) { Error ("Constant expression expected"); /* To avoid any compiler errors, make the expression a valid const */ - ED_MakeConstAbsInt (&Expr, 1); + Expr.Flags &= E_MASK_RTYPE | E_MASK_KEEP_RESULT; + Expr.Flags |= E_LOC_NONE; } /* Return by value */ diff --git a/src/cc65/symtab.c b/src/cc65/symtab.c index b4c97e962..aa4a9a44a 100644 --- a/src/cc65/symtab.c +++ b/src/cc65/symtab.c @@ -728,6 +728,7 @@ static int HandleSymRedefinition (SymEntry* Entry, const Type* T, unsigned Flags /* New type must be compatible with the composite prototype */ if (IsDistinctRedef (E_Type, T, TC_EQUAL, TCF_MASK_QUAL)) { Error ("Conflicting function types for '%s'", Entry->Name); + TypeCompatibilityDiagnostic (T, E_Type, 0, "'%s' vs '%s'"); Entry = 0; } else { /* Refine the existing composite prototype with this new