Skip to content

cmd/compile: rerwrite cycle detection logic taking too long for large functions #66773

@CodFrm

Description

@CodFrm

Go version

go version go1.21.9 darwin/arm64

Output of go env in your module/workspace:

GO111MODULE='on'
GOARCH='arm64'
GOBIN=''
GOCACHE='/Users/codfrm/Library/Caches/go-build'
GOENV='/Users/codfrm/Library/Application Support/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='arm64'
GOHOSTOS='darwin'
GOINSECURE=''
GOMODCACHE='/Users/codfrm/go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='darwin'
GOPATH='/Users/codfrm/go'
GOPRIVATE=''
GOPROXY='https://goproxy.cn,direct'
GOROOT='/Users/codfrm/go/go1.21.9'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/Users/codfrm/go/go1.21.9/pkg/tool/darwin_arm64'
GOVCS=''
GOVERSION='go1.21.9'
GCCGO='gccgo'
AR='ar'
CC='clang'
CXX='clang++'
CGO_ENABLED='1'
GOMOD='****/test/go.mod'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -ffile-prefix-map=/var/folders/xr/2xv9m3_j4vd3hp0bdjx52z7m0000gn/T/go-build1074337786=/tmp/go-build -gno-record-gcc-switches -fno-common'

What did you do?

The code gets stuck when building it with go1.21, but it builds fine with go1.18

What did you see happen?

It keeps getting stuck when building the source code below using the command:

go build -x -work -v main.go

WORK=/var/folders/xr/2xv9m3_j4vd3hp0bdjx52z7m0000gn/T/go-build2102151065
test/src
mkdir -p $WORK/b043/
cat >/var/folders/xr/2xv9m3_j4vd3hp0bdjx52z7m0000gn/T/go-build2102151065/b043/importcfg << 'EOF' # internal
# import config
EOF
cd /****/test
/Users/codfrm/go/go1.21.9/pkg/tool/darwin_arm64/compile -o $WORK/b043/_pkg_.a -trimpath "$WORK/b043=>" -p test/src -lang=go1.18 -complete -buildid BVwUNF2ANdz8supqWmvy/BVwUNF2ANdz8supqWmvy -goversion go1.21.9 -c=4 -shared -nolocalimports -importcfg $WORK/b043/importcfg -pack ./src/t.go

code.zip

What did you expect to see?

It can be built normally using go1.21 or higher version

Metadata

Metadata

Assignees

Labels

FrozenDueToAgeNeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.compiler/runtimeIssues related to the Go compiler and/or runtime.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions