cmd/cgo: in -godefs mode, don't change constant to type

Fixes #39534

Change-Id: Icbc1745935dd7098c09e2d35c61cd5bfbaa31c63
Reviewed-on: https://go-review.googlesource.com/c/go/+/237558
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
diff --git a/misc/cgo/testgodefs/testdata/issue39534.go b/misc/cgo/testgodefs/testdata/issue39534.go
new file mode 100644
index 0000000..9899ba1
--- /dev/null
+++ b/misc/cgo/testgodefs/testdata/issue39534.go
@@ -0,0 +1,12 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+//
+// +build ignore
+
+package main
+
+// enum { ENUMVAL = 0x1 };
+import "C"
+
+const ENUMVAL = C.ENUMVAL
diff --git a/misc/cgo/testgodefs/testgodefs_test.go b/misc/cgo/testgodefs/testgodefs_test.go
index 178fff3..e4085f9 100644
--- a/misc/cgo/testgodefs/testgodefs_test.go
+++ b/misc/cgo/testgodefs/testgodefs_test.go
@@ -24,6 +24,7 @@
 	"issue37479",
 	"issue37621",
 	"issue38649",
+	"issue39534",
 }
 
 func TestGoDefs(t *testing.T) {
diff --git a/src/cmd/cgo/gcc.go b/src/cmd/cgo/gcc.go
index d903a7a..a59534e 100644
--- a/src/cmd/cgo/gcc.go
+++ b/src/cmd/cgo/gcc.go
@@ -1354,7 +1354,7 @@
 
 		if *godefs {
 			// Substitute definition for mangled type name.
-			if r.Name.Type != nil {
+			if r.Name.Type != nil && r.Name.Kind == "type" {
 				expr = r.Name.Type.Go
 			}
 			if id, ok := expr.(*ast.Ident); ok {