]> Cypherpunks repositories - gostls13.git/commitdiff
gc: change "can we const evaluate this" from blacklist to whitelist
authorRuss Cox <rsc@golang.org>
Tue, 17 Nov 2009 01:40:47 +0000 (17:40 -0800)
committerRuss Cox <rsc@golang.org>
Tue, 17 Nov 2009 01:40:47 +0000 (17:40 -0800)
R=ken2
https://golang.org/cl/155074

src/cmd/gc/const.c

index b11ab1c7f8f2fcc2050d561f5e98d77e6219d8b5..cca13b9528988dd52ea16c03c6054420a84f0803 100644 (file)
@@ -329,14 +329,38 @@ evconst(Node *n)
        Val v;
        Mpint b;
 
+       // pick off just the opcodes that can be
+       // constant evaluated.
        switch(n->op) {
-       case OMAKE:
-       case OMAKEMAP:
-       case OMAKESLICE:
-       case OMAKECHAN:
-       case ODCLCONST:
-       case OCONVIFACE:
+       default:
                return;
+       case OADD:
+       case OADDSTR:
+       case OAND:
+       case OANDAND:
+       case OANDNOT:
+       case OARRAYBYTESTR:
+       case OCOM:
+       case OCONV:
+       case ODIV:
+       case OEQ:
+       case OGE:
+       case OGT:
+       case OLE:
+       case OLSH:
+       case OLT:
+       case OMINUS:
+       case OMOD:
+       case OMUL:
+       case ONE:
+       case ONOT:
+       case OOR:
+       case OOROR:
+       case OPLUS:
+       case ORSH:
+       case OSUB:
+       case OXOR:
+               break;
        }
 
        nl = n->left;