Skip to content

Commit 2c17b51

Browse files
committed
Fixed to correctly diagnose expressions with NPC
1 parent 3b3f01b commit 2c17b51

File tree

3 files changed

+3
-3
lines changed

3 files changed

+3
-3
lines changed

src/c.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,7 @@ extern Tree cnsttree(Type, ...);
445445
extern Tree consttree(int, Type);
446446
extern Tree eqtree(int, Tree, Tree);
447447
extern int iscallb(Tree);
448+
extern int isnullptr(Tree);
448449
extern Tree shtree(int, Tree, Tree);
449450
extern void typeerror(int, Tree, Tree);
450451

src/enode.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ static Tree addtree(int, Tree, Tree);
66
static Tree andtree(int, Tree, Tree);
77
static Tree cmptree(int, Tree, Tree);
88
static int compatible(Type, Type);
9-
static int isnullptr(Tree e);
109
static Tree multree(int, Tree, Tree);
1110
static Tree subtree(int, Tree, Tree);
1211
#define isvoidptr(ty) \
@@ -226,7 +225,7 @@ static int compatible(Type ty1, Type ty2) {
226225
&& isptr(ty2) && !isfunc(ty2->type)
227226
&& eqtype(unqual(ty1->type), unqual(ty2->type), 0);
228227
}
229-
static int isnullptr(Tree e) {
228+
int isnullptr(Tree e) {
230229
Type ty = unqual(e->type);
231230

232231
return generic(e->op) == CNST

src/expr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -621,7 +621,7 @@ Tree cast(Tree p, Type type) {
621621
p = simplify(CVP, dst, p, NULL);
622622
else {
623623
if (isfunc(src->type) && !isfunc(dst->type)
624-
|| !isfunc(src->type) && isfunc(dst->type))
624+
|| !isnullptr(p) && !isfunc(src->type) && isfunc(dst->type))
625625
warning("conversion from `%t' to `%t' is compiler dependent\n", p->type, type);
626626

627627
if (src->size != dst->size)

0 commit comments

Comments
 (0)