diff options
| author | 2025-11-26 18:46:44 +0100 | |
|---|---|---|
| committer | 2025-11-26 19:31:10 +0100 | |
| commit | 375e9f050de6b09c00eecafd63bd9b967fbeb335 (patch) | |
| tree | 940db01d53dbe8d39279b6c95902b4cfadb31f92 /c | |
| parent | 0bb43ea3af31d4c141285ab968b476228416f0c8 (diff) | |
c/type: make implicit const T* -> T* conversion warning, not error
Diffstat (limited to 'c')
| -rw-r--r-- | c/c.c | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -342,7 +342,14 @@ argpromote(union type t) bool assigncheck(union type t, const struct expr *src) { - if (assigncompat(t, typedecay(src->ty))) return 1; + union type srcty = typedecay(src->ty);; + if (assigncompat(t, srcty)) { + if (t.t == TYPTR && srcty.t == TYPTR + && (t.flag & TFCHLDQUAL & srcty.flag & TFCHLDQUAL) != (srcty.flag & TFCHLDQUAL)) { + warn(&src->span, "usage of '%ty' discards pointer qualifiers", src->ty); + } + return 1; + } if (t.t == TYPTR && iszero(*src)) return 1; return 0; } |