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