Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gccgo: ICE on package-scope multi-valued initialization expression that requires implicit conversion #53619

Closed
mdempsky opened this issue Jun 29, 2022 · 3 comments
Labels
FrozenDueToAge NeedsFix The path to resolution is known, but the work has not been done.
Milestone

Comments

@mdempsky
Copy link
Contributor

https://go.dev/play/p/nA41isBtLxK should run and terminate quietly with success.

With "gccgo (Debian 11.2.0-20) 11.2.0", it ICEs:

$ gccgo -o x x.go
go1: internal compiler error: in type_descriptor_backend_name, at go/gofrontend/names.cc:1086
0x7f9f20ffa7fc __libc_start_main
	../csu/libc-start.c:332
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <file:///usr/share/doc/gcc-11/README.Bugs> for instructions.

/cc @ianlancetaylor

@mdempsky mdempsky added the NeedsFix The path to resolution is known, but the work has not been done. label Jun 29, 2022
@mdempsky mdempsky added this to the Gccgo milestone Jun 29, 2022
@gopherbot
Copy link
Contributor

Change https://go.dev/cl/415238 mentions this issue: test: add regress test for #53619

gopherbot pushed a commit that referenced this issue Jun 30, 2022
Works with cmd/compile, but fails with gccgo currently.

Updates #53619.

Change-Id: I787faa9584cc33bd851c9cc8f146c91f4eb36fc9
Reviewed-on: https://go-review.googlesource.com/c/go/+/415238
Reviewed-by: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
@gopherbot
Copy link
Contributor

Change https://go.dev/cl/415517 mentions this issue: [dev.unified] all: merge master (993c387) into dev.unified

gopherbot pushed a commit that referenced this issue Jun 30, 2022
Conflicts:

- test/run.go: textual conflict in 1.18 known failures list

Merge List:

+ 2022-06-30 993c387 os: simplify deadline fluctuation tests
+ 2022-06-30 4914e4e cmd/go/internal/modindex: remove spurious field from index_format documentation
+ 2022-06-30 981d594 cmd/go: include module root in package index key
+ 2022-06-30 84db00f cmd/go: add a 'sleep' command for script tests
+ 2022-06-30 31b8c23 cmd/compile: fix prove pass when upper condition is <= maxint
+ 2022-06-30 17083a2 spec: retitle section on "Assignments" to "Assignment statements"
+ 2022-06-30 4d95fe6 test: add regress test for #53619
+ 2022-06-29 6a7c64f debug/pe: add IMAGE_FILE_MACHINE_LOONGARCH{64,32}
+ 2022-06-29 b2cc0fe net/http: preserve nil values in Header.Clone
+ 2022-06-29 64ef16e cmd/internal/obj/arm64: save LR and SP in one instruction for small frames
+ 2022-06-29 0750107 go/token: use atomics not Mutex for last file cache
+ 2022-06-29 e5017a9 net/http: don't strip whitespace from Transfer-Encoding headers
+ 2022-06-29 20760cf runtime: add race annotations to cbs.lock
+ 2022-06-29 e6c0546 crypto/x509/pkix: move crl deprecation message
+ 2022-06-29 3562977 cmd/internal/obj/mips,s390x,riscv: save LR after decrementing SP
+ 2022-06-29 d6481d5 runtime: add race annotations to metricsSema
+ 2022-06-29 bd1783e crypto/x509: improve RevocationList documentation
+ 2022-06-28 160414c cmd/internal/obj/arm64: fix BITCON constant printing error
+ 2022-06-28 a30f434 cmd/go: pass --no-decorate when listing git tags for a commit
+ 2022-06-28 3580ef9 os/exec: on Windows, suppress ErrDot if the implicit path matches the explicit one
+ 2022-06-28 34f3ac5 cmd/compile: fix generic inter-inter comparisons from value switch statements
+ 2022-06-28 7df0a00 cmd/go/internal/modfetch: cache latest revinfo in Versions func
+ 2022-06-28 d5bf960 test: add more tests for const decls with ommitted RHS expressions
+ 2022-06-28 533082d test: add test that gofrontend failed to compile
+ 2022-06-28 47e792e runtime: clean up unused function gosave on loong64
+ 2022-06-28 a6e5be0 cmd/go: omit build metadata that may contain system paths when -trimpath is set
+ 2022-06-28 d3ffff2 api: correct debug/pe issue number for Go 1.19 changes
+ 2022-06-28 751cae8 cmd/go/internal/modload: fix doc comment
+ 2022-06-28 85d7bab go/printer: report allocs and set bytes
+ 2022-06-27 3af5280 net: really skip Windows PTR tests if we say we are skipping them
+ 2022-06-27 a42573c net: avoid darwin/arm64 platform bug in TestCloseWrite
+ 2022-06-27 68289f3 html/template: fix typo in content_test.go
+ 2022-06-27 c3bea70 cmd/link: link against libsynchronization.a for -race on windows
+ 2022-06-27 f093cf9 test: add test that caused gofrontend crash
+ 2022-06-27 155612a test: add test that caused gofrontend crash
+ 2022-06-27 a861eee cmd/go: compile runtime/internal/syscall as a runtime package
+ 2022-06-27 8f9bfa9 crypto/internal/boring: factor Cache into crypto/internal/boring/bcache
+ 2022-06-26 351e0f4 runtime: avoid fma in mkfastlog2table
+ 2022-06-26 416c953 test: add test that gofrontend gets wrong
+ 2022-06-26 666d736 cmd/compile: do branch/label checks only once
+ 2022-06-26 6b309be cmd/compile/internal/syntax: check fallthrough in CheckBranches mode
+ 2022-06-25 1821639 runtime: mark string comparison hooks as no split
+ 2022-06-25 3b594b9 io: clarify SeekEnd offset value
+ 2022-06-25 4f45ec5 cmd/go: prepend builtin prolog when checking for preamble errors
+ 2022-06-24 41e1d90 strconv: avoid panic on invalid call to FormatFloat
+ 2022-06-24 bd47539 internal/trace: add Go 1.19 test data
+ 2022-06-24 6b6c64b cmd/internal/archive: don't rely on an erroneous install target in tests

Change-Id: Ib43126833bf534c311730d4283d4d25381cd3428
@gopherbot
Copy link
Contributor

Change https://go.dev/cl/415594 mentions this issue: compiler: use correct init order for multi-value initialization

xionghul pushed a commit to xionghul/gcc that referenced this issue Jul 1, 2022
Use the correct initialization order for

var a = c
var b, c = x.(bool)

The global c is initialized by the preinit of b, but were missing a
dependency of c on b, so a would be initialized to the zero value of c
rather than the correct value.

Simply adding the dependency of c on b didn't work because the preinit
of b refers to c, so that appeared circular.  So this patch changes
the init order to skip dependencies that only appear on the left hand
side of assignments in preinit blocks.

Doing that didn't work because the write barrier pass can transform "a
= b" into code like "gcWriteBarrier(&a, b)" that is not obviously a
simple assigment.  So this patch moves the collection of dependencies
to just after lowering, before the write barriers are inserted.

Making those changes permit relaxing the requirement that we don't
warn about self-dependency in preinit blocks, so now we correctly warn
for

var a, b any = b.(bool)

The test case is https://go.dev/cl/415238.

Fixes golang/go#53619

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/415594
realqhc pushed a commit to realqhc/gofrontend that referenced this issue Aug 4, 2022
Use the correct initialization order for

var a = c
var b, c = x.(bool)

The global c is initialized by the preinit of b, but were missing a
dependency of c on b, so a would be initialized to the zero value of c
rather than the correct value.

Simply adding the dependency of c on b didn't work because the preinit
of b refers to c, so that appeared circular.  So this patch changes
the init order to skip dependencies that only appear on the left hand
side of assignments in preinit blocks.

Doing that didn't work because the write barrier pass can transform "a
= b" into code like "gcWriteBarrier(&a, b)" that is not obviously a
simple assigment.  So this patch moves the collection of dependencies
to just after lowering, before the write barriers are inserted.

Making those changes permit relaxing the requirement that we don't
warn about self-dependency in preinit blocks, so now we correctly warn
for

var a, b any = b.(bool)

The test case is https://go.dev/cl/415238.

Fixes golang/go#53619

Change-Id: I095b5a330ab657fc3c7b366e85c881c2a80e5a1a
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/415594
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
jproberts pushed a commit to jproberts/go that referenced this issue Aug 10, 2022
Works with cmd/compile, but fails with gccgo currently.

Updates golang#53619.

Change-Id: I787faa9584cc33bd851c9cc8f146c91f4eb36fc9
Reviewed-on: https://go-review.googlesource.com/c/go/+/415238
Reviewed-by: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
@golang golang locked and limited conversation to collaborators Jul 2, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
FrozenDueToAge NeedsFix The path to resolution is known, but the work has not been done.
Projects
None yet
Development

No branches or pull requests

2 participants