diff options
-rw-r--r-- | sys/src/cmd/cc/com.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/src/cmd/cc/com.c b/sys/src/cmd/cc/com.c index 49fcefd1a..6dfc7d421 100644 --- a/sys/src/cmd/cc/com.c +++ b/sys/src/cmd/cc/com.c @@ -1018,6 +1018,8 @@ if(debug['y']) prtree(n, "final"); * remove some zero operands * remove no op casts * evaluate constants + * Note: ccom may be called on the same node + * multiple times. */ void ccom(Node *n) @@ -1078,8 +1080,9 @@ loop: if(n->type == types[TVOID] && !side(l)){ n->left = Z; n->type = T; - break; } + if(n->left == Z) + break; if(castucom(n)) warn(n, "32-bit unsigned complement zero-extended to 64 bits"); ccom(l); |