Commit 89bfddbf authored by Dmitriy Vyukov's avatar Dmitriy Vyukov

cmd/gc: racewalk: handle OEFACE/OCONVIFACE

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/6821096
parent 96833d3a
...@@ -153,12 +153,6 @@ racewalknode(Node **np, NodeList **init, int wr, int skip) ...@@ -153,12 +153,6 @@ racewalknode(Node **np, NodeList **init, int wr, int skip)
racewalknode(&n->left, init, 0, 0); racewalknode(&n->left, init, 0, 0);
goto ret; goto ret;
case OFOR:
goto ret;
case OIF:
goto ret;
case OPROC: case OPROC:
racewalknode(&n->left, init, 0, 0); racewalknode(&n->left, init, 0, 0);
goto ret; goto ret;
...@@ -171,24 +165,12 @@ racewalknode(Node **np, NodeList **init, int wr, int skip) ...@@ -171,24 +165,12 @@ racewalknode(Node **np, NodeList **init, int wr, int skip)
racewalknode(&n->left, init, 0, 0); racewalknode(&n->left, init, 0, 0);
goto ret; goto ret;
case OCALLMETH:
goto ret;
case ORETURN:
goto ret;
case OSELECT:
goto ret;
case OSWITCH: case OSWITCH:
if(n->ntest->op == OTYPESW) if(n->ntest->op == OTYPESW)
// TODO(dvyukov): the expression can contain calls or reads. // TODO(dvyukov): the expression can contain calls or reads.
return; return;
goto ret; goto ret;
case OEMPTY:
goto ret;
case ONOT: case ONOT:
case OMINUS: case OMINUS:
case OPLUS: case OPLUS:
...@@ -299,6 +281,11 @@ racewalknode(Node **np, NodeList **init, int wr, int skip) ...@@ -299,6 +281,11 @@ racewalknode(Node **np, NodeList **init, int wr, int skip)
racewalknode(&n->left, init, 0, 1); racewalknode(&n->left, init, 0, 1);
goto ret; goto ret;
case OEFACE:
racewalknode(&n->left, init, 0, 0);
racewalknode(&n->right, init, 0, 0);
goto ret;
// should not appear in AST by now // should not appear in AST by now
case OSEND: case OSEND:
case ORECV: case ORECV:
...@@ -309,9 +296,19 @@ racewalknode(Node **np, NodeList **init, int wr, int skip) ...@@ -309,9 +296,19 @@ racewalknode(Node **np, NodeList **init, int wr, int skip)
case OCASE: case OCASE:
case OPANIC: case OPANIC:
case ORECOVER: case ORECOVER:
case OCONVIFACE:
yyerror("racewalk: %O must be lowered by now", n->op); yyerror("racewalk: %O must be lowered by now", n->op);
goto ret; goto ret;
// just do generic traversal
case OFOR:
case OIF:
case OCALLMETH:
case ORETURN:
case OSELECT:
case OEMPTY:
goto ret;
// does not require instrumentation // does not require instrumentation
case OINDEXMAP: // implemented in runtime case OINDEXMAP: // implemented in runtime
case OPRINT: // don't bother instrumenting it case OPRINT: // don't bother instrumenting it
...@@ -340,7 +337,6 @@ racewalknode(Node **np, NodeList **init, int wr, int skip) ...@@ -340,7 +337,6 @@ racewalknode(Node **np, NodeList **init, int wr, int skip)
case OCLOSURE: case OCLOSURE:
case ODOTTYPE: case ODOTTYPE:
case ODOTTYPE2: case ODOTTYPE2:
case OCONVIFACE:
case OCALL: case OCALL:
case OBREAK: case OBREAK:
case ODCL: case ODCL:
...@@ -357,7 +353,6 @@ racewalknode(Node **np, NodeList **init, int wr, int skip) ...@@ -357,7 +353,6 @@ racewalknode(Node **np, NodeList **init, int wr, int skip)
case OINDREG: case OINDREG:
case OCOM: case OCOM:
case ODOTMETH: case ODOTMETH:
case OEFACE:
case OITAB: case OITAB:
case OEXTEND: case OEXTEND:
case OHMUL: case OHMUL:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment