summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/cmd/cc/com.c5
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);