From 63191949b911658c3774e727061fcf166ad9ace2 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Wed, 19 Jun 2019 23:50:33 +0200 Subject: cc: remove nullwarn() from OCAST codegen, zap void casts implicit casts would cause spurious "result of operation not used" warnings such as ape's stdio putc() macro. make (void) casts non-ops when the casted expression has no side effects. this avoid spurious warning with ape's assert() macro. --- sys/src/cmd/1c/cgen.c | 5 +---- sys/src/cmd/2c/cgen.c | 5 +---- sys/src/cmd/5c/cgen.c | 7 ++----- sys/src/cmd/6c/cgen.c | 5 +---- sys/src/cmd/6c/sgen.c | 2 +- sys/src/cmd/7c/cgen.c | 2 +- sys/src/cmd/8c/cgen.c | 5 +---- sys/src/cmd/cc/com.c | 5 +++++ sys/src/cmd/kc/cgen.c | 5 +---- sys/src/cmd/qc/cgen.c | 5 +---- sys/src/cmd/vc/cgen.c | 5 +---- 11 files changed, 16 insertions(+), 35 deletions(-) diff --git a/sys/src/cmd/1c/cgen.c b/sys/src/cmd/1c/cgen.c index d790f75e9..bde50d53c 100644 --- a/sys/src/cmd/1c/cgen.c +++ b/sys/src/cmd/1c/cgen.c @@ -376,10 +376,7 @@ cgen(Node *n, int result, Node *nn) case OCAST: if(result == D_NONE) { - if(n->type != types[TVOID]) - nullwarn(l, Z); - else - cgen(l, D_NONE, Z); + cgen(l, D_NONE, Z); break; } lg = result; diff --git a/sys/src/cmd/2c/cgen.c b/sys/src/cmd/2c/cgen.c index ca78a8c55..eae220fcd 100644 --- a/sys/src/cmd/2c/cgen.c +++ b/sys/src/cmd/2c/cgen.c @@ -376,10 +376,7 @@ cgen(Node *n, int result, Node *nn) case OCAST: if(result == D_NONE) { - if(n->type != types[TVOID]) - nullwarn(l, Z); - else - cgen(l, D_NONE, Z); + cgen(l, D_NONE, Z); break; } lg = result; diff --git a/sys/src/cmd/5c/cgen.c b/sys/src/cmd/5c/cgen.c index 05d1dd821..dae6e1872 100644 --- a/sys/src/cmd/5c/cgen.c +++ b/sys/src/cmd/5c/cgen.c @@ -399,10 +399,7 @@ cgenrel(Node *n, Node *nn, int inrel) case OCAST: if(nn == Z) { - if(n->type != types[TVOID]) - nullwarn(l, Z); - else - cgen(l, Z); + cgen(l, Z); break; } /* @@ -927,7 +924,7 @@ cgen64(Node *n, Node *nn) case OCAST: if(nn == Z){ - nullwarn(l, Z); + cgen(l, Z); goto Out; } if(typeilp[n->type->etype] && typev[l->type->etype]){ diff --git a/sys/src/cmd/6c/cgen.c b/sys/src/cmd/6c/cgen.c index b2d54d577..3a5de9e21 100644 --- a/sys/src/cmd/6c/cgen.c +++ b/sys/src/cmd/6c/cgen.c @@ -976,10 +976,7 @@ cgen(Node *n, Node *nn) case OCAST: if(nn == Z) { - if(n->type != types[TVOID]) - nullwarn(l, Z); - else - cgen(l, Z); + cgen(l, Z); break; } /* diff --git a/sys/src/cmd/6c/sgen.c b/sys/src/cmd/6c/sgen.c index 936559bea..284c476d0 100644 --- a/sys/src/cmd/6c/sgen.c +++ b/sys/src/cmd/6c/sgen.c @@ -326,7 +326,7 @@ brk: break; case OCAST: - if(l->type->etype == TUVLONG && typefd[n->type->etype]) + if(l != Z && l->type->etype == TUVLONG && typefd[n->type->etype]) n->complex += 2; break; diff --git a/sys/src/cmd/7c/cgen.c b/sys/src/cmd/7c/cgen.c index c8e1cbe7f..2e6010b81 100644 --- a/sys/src/cmd/7c/cgen.c +++ b/sys/src/cmd/7c/cgen.c @@ -442,7 +442,7 @@ cgenrel(Node *n, Node *nn, int inrel) case OCAST: if(nn == Z) { - nullwarn(l, Z); + cgen(l, Z); break; } /* diff --git a/sys/src/cmd/8c/cgen.c b/sys/src/cmd/8c/cgen.c index cd0288bba..0c26454e8 100644 --- a/sys/src/cmd/8c/cgen.c +++ b/sys/src/cmd/8c/cgen.c @@ -994,10 +994,7 @@ cgen(Node *n, Node *nn) case OCAST: if(nn == Z) { - if(n->type != types[TVOID]) - nullwarn(l, Z); - else - cgen(l, Z); + cgen(l, Z); break; } /* diff --git a/sys/src/cmd/cc/com.c b/sys/src/cmd/cc/com.c index 9fcf9861f..46a59d49a 100644 --- a/sys/src/cmd/cc/com.c +++ b/sys/src/cmd/cc/com.c @@ -1073,6 +1073,11 @@ loop: break; case OCAST: + if(n->type == types[TVOID] && !side(l)){ + n->left = Z; + n->type = T; + break; + } if(castucom(n)) warn(n, "32-bit unsigned complement zero-extended to 64 bits"); ccom(l); diff --git a/sys/src/cmd/kc/cgen.c b/sys/src/cmd/kc/cgen.c index 14be95d6a..ad295177b 100644 --- a/sys/src/cmd/kc/cgen.c +++ b/sys/src/cmd/kc/cgen.c @@ -358,10 +358,7 @@ cgen(Node *n, Node *nn) case OCAST: if(nn == Z) { - if(n->type != types[TVOID]) - nullwarn(l, Z); - else - cgen(l, Z); + cgen(l, Z); break; } /* diff --git a/sys/src/cmd/qc/cgen.c b/sys/src/cmd/qc/cgen.c index 104a36473..b2391e3f8 100644 --- a/sys/src/cmd/qc/cgen.c +++ b/sys/src/cmd/qc/cgen.c @@ -395,10 +395,7 @@ cgen(Node *n, Node *nn) case OCAST: if(nn == Z) { - if(n->type != types[TVOID]) - nullwarn(l, Z); - else - cgen(l, Z); + cgen(l, Z); break; } /* diff --git a/sys/src/cmd/vc/cgen.c b/sys/src/cmd/vc/cgen.c index fb43c55e6..7b9ec4808 100644 --- a/sys/src/cmd/vc/cgen.c +++ b/sys/src/cmd/vc/cgen.c @@ -359,10 +359,7 @@ cgen(Node *n, Node *nn) case OCAST: if(nn == Z) { - if(n->type != types[TVOID]) - nullwarn(l, Z); - else - cgen(l, Z); + cgen(l, Z); break; } /* -- cgit v1.2.3