undo CL 93380044 / 7f0999348917

Partial undo, just of go:nosplit annotation.  Somehow it
is breaking the windows builders.

TBR=bradfitz

««« original CL description
runtime: implement string ops in Go

Also implement go:nosplit annotation.  Not really needed
for now, but we'll definitely need it for other conversions.

benchmark                 old ns/op     new ns/op     delta
BenchmarkRuneIterate      534           474           -11.24%
BenchmarkRuneIterate2     535           470           -12.15%

LGTM=bradfitz
R=golang-codereviews, dave, bradfitz, minux
CC=golang-codereviews
https://golang.org/cl/93380044
»»»

TBR=bradfitz
CC=golang-codereviews
https://golang.org/cl/105260044
diff --git a/src/cmd/gc/fmt.c b/src/cmd/gc/fmt.c
index 8c2f8b9..b5f8a83 100644
--- a/src/cmd/gc/fmt.c
+++ b/src/cmd/gc/fmt.c
@@ -649,7 +649,7 @@
 
 		if(t->funarg) {
 			fmtstrcpy(fp, "(");
-			if(fmtmode == FTypeId || fmtmode == FErr) {	// no argument names on function signature, and no "noescape"/"nosplit" tags
+			if(fmtmode == FTypeId || fmtmode == FErr) {	// no argument names on function signature, and no "noescape" tags
 				for(t1=t->type; t1!=T; t1=t1->down)
 					if(t1->down)
 						fmtprint(fp, "%hT, ", t1);
diff --git a/src/cmd/gc/go.h b/src/cmd/gc/go.h
index a5a464e..413e710 100644
--- a/src/cmd/gc/go.h
+++ b/src/cmd/gc/go.h
@@ -269,7 +269,6 @@
 	uchar	colas;		// OAS resulting from :=
 	uchar	diag;		// already printed error about this
 	uchar	noescape;	// func arguments do not escape
-	uchar	nosplit;	// func should not execute on separate stack
 	uchar	builtin;	// built-in name, like len or close
 	uchar	walkdef;
 	uchar	typecheck;
@@ -981,7 +980,6 @@
 EXTERN	int	flag_race;
 EXTERN	int	flag_largemodel;
 EXTERN	int	noescape;
-EXTERN	int	nosplit;
 EXTERN	int	debuglive;
 EXTERN	Link*	ctxt;
 
diff --git a/src/cmd/gc/go.y b/src/cmd/gc/go.y
index e351fa7..2f354f72 100644
--- a/src/cmd/gc/go.y
+++ b/src/cmd/gc/go.y
@@ -1311,7 +1311,6 @@
 		$$->nbody = $3;
 		$$->endlineno = lineno;
 		$$->noescape = noescape;
-		$$->nosplit = nosplit;
 		funcbody($$);
 	}
 
@@ -1496,7 +1495,6 @@
 			testdclstack();
 		nointerface = 0;
 		noescape = 0;
-		nosplit = 0;
 	}
 
 vardcl_list:
diff --git a/src/cmd/gc/lex.c b/src/cmd/gc/lex.c
index c90cbef..a50101c 100644
--- a/src/cmd/gc/lex.c
+++ b/src/cmd/gc/lex.c
@@ -1592,10 +1592,6 @@
 		noescape = 1;
 		goto out;
 	}
-	if(strcmp(lexbuf, "go:nosplit") == 0) {
-		nosplit = 1;
-		goto out;
-	}
 	
 out:
 	return c;
diff --git a/src/cmd/gc/pgen.c b/src/cmd/gc/pgen.c
index cabba68..40620c3 100644
--- a/src/cmd/gc/pgen.c
+++ b/src/cmd/gc/pgen.c
@@ -229,8 +229,6 @@
 		ptxt->TEXTFLAG |= WRAPPER;
 	if(fn->needctxt)
 		ptxt->TEXTFLAG |= NEEDCTXT;
-	if(fn->nosplit)
-		ptxt->TEXTFLAG |= NOSPLIT;
 
 	// Clumsy but important.
 	// See test/recover.go for test cases and src/pkg/reflect/value.go
diff --git a/src/cmd/gc/y.tab.c b/src/cmd/gc/y.tab.c
index c389f23..08d8ecf 100644
--- a/src/cmd/gc/y.tab.c
+++ b/src/cmd/gc/y.tab.c
@@ -3828,7 +3828,6 @@
 		(yyval.node)->nbody = (yyvsp[(3) - (3)].list);
 		(yyval.node)->endlineno = lineno;
 		(yyval.node)->noescape = noescape;
-		(yyval.node)->nosplit = nosplit;
 		funcbody((yyval.node));
 	}
     break;
@@ -4038,7 +4037,6 @@
 			testdclstack();
 		nointerface = 0;
 		noescape = 0;
-		nosplit = 0;
 	}
     break;