cmd/protoc-gen-go: revert Enum simplication

Go1.12 on GoLLVM with LLVM 9.0.0 has a bug where the simpler but
equivalent expression results in memory corruption.
Revert to the more complex expression to avoid breaking GoLLVM and
it is not worth waiting for a GoLLVM fix.

Change-Id: I8b42965ca9bd333deb8693021e7b22f966e13521
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/171463
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/encoding/testprotos/pb2/test.pb.go b/encoding/testprotos/pb2/test.pb.go
index a9d1131..2e43716 100644
--- a/encoding/testprotos/pb2/test.pb.go
+++ b/encoding/testprotos/pb2/test.pb.go
@@ -37,7 +37,9 @@
 }
 
 func (x Enum) Enum() *Enum {
-	return &x
+	p := new(Enum)
+	*p = x
+	return p
 }
 
 func (x Enum) String() string {
@@ -90,7 +92,9 @@
 }
 
 func (x Enums_NestedEnum) Enum() *Enums_NestedEnum {
-	return &x
+	p := new(Enums_NestedEnum)
+	*p = x
+	return p
 }
 
 func (x Enums_NestedEnum) String() string {