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
cmd/compile: internal compiler error: can't find source for b12->b4: v31 = MOVBload <bool> v14 v1 : DX #49122
Comments
Pre ed647b1, we use the first autotmp and swap the last to the first position. With With ed647b1 we changed the order to use the last free autotmp first. With If I changed order to always use the first autotmp, and prune it from the free list, that means we pick Kindly ask @randall77, since when you added the original approach in https://go-review.googlesource.com/c/go/+/140301/ With this program:
Checking the diff (full diff below), this one seems interesting:
So Here's the diff with the current tip and my patch to always use the first autotmpbefore walk f before walk f . DCL # p.go:7:6 . DCL # p.go:7:6 . . NAME-x.q esc(no) Class:PAUTO Offset:0 OnStack Used bool tc(1) # p.go:7:6 . . NAME-x.q esc(no) Class:PAUTO Offset:0 OnStack Used bool tc(1) # p.go:7:6 . AS tc(1) # p.go:7:6 . AS tc(1) # p.go:7:6 . . NAME-x.q esc(no) Class:PAUTO Offset:0 OnStack Used bool tc(1) # p.go:7:6 . . NAME-x.q esc(no) Class:PAUTO Offset:0 OnStack Used bool tc(1) # p.go:7:6 . AS tc(1) # p.go:9:8 . AS tc(1) # p.go:9:8 . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 . . NAME-x.p esc(no) Class:PPARAM Offset:0 OnStack Used bool tc(1) # p.go:6:8 . . NAME-x.p esc(no) Class:PPARAM Offset:0 OnStack Used bool tc(1) # p.go:6:8 . IF # p.go:9:8 . IF # p.go:9:8 . IF-Cond . IF-Cond . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 . IF-Else . IF-Else . . AS tc(1) # p.go:9:8 . . AS tc(1) # p.go:9:8 . . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 . . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 . . . LT bool tc(1) # p.go:9:15 . . . LT bool tc(1) # p.go:9:15 . . . . AND int tc(1) # p.go:9:12 . . . . AND int tc(1) # p.go:9:12 . . . . . NAME-x.N Class:PEXTERN Offset:0 int tc(1) # p.go:4:5 . . . . . NAME-x.N Class:PEXTERN Offset:0 int tc(1) # p.go:4:5 . . . . . NAME-x.N Class:PEXTERN Offset:0 int tc(1) # p.go:4:5 . . . . . NAME-x.N Class:PEXTERN Offset:0 int tc(1) # p.go:4:5 . . . . NAME-x.N Class:PEXTERN Offset:0 int tc(1) # p.go:4:5 . . . . NAME-x.N Class:PEXTERN Offset:0 int tc(1) # p.go:4:5 . AS tc(1) # p.go:9:19 . AS tc(1) # p.go:9:19 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 . IF # p.go:9:19 . IF # p.go:9:19 . IF-Cond . IF-Cond . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . IF-Else . IF-Else . . AS tc(1) # p.go:9:19 . . AS tc(1) # p.go:9:19 . . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:1 . . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:1 . . . INDEX bool tc(1) # p.go:9:23 . . . INDEX bool tc(1) # p.go:9:23 . . . . NAME-x.B Class:PEXTERN Offset:0 SLICE-[]bool tc(1) # p.go:3:5 . . . . NAME-x.B Class:PEXTERN Offset:0 SLICE-[]bool tc(1) # p.go:3:5 . . . . LITERAL-0 int tc(1) # p.go:9:24 . . . . LITERAL-0 int tc(1) # p.go:9:24 . AS tc(1) # p.go:9:27 . AS tc(1) # p.go:9:27 . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:27 . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:27 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . IF # p.go:9:27 . IF # p.go:9:27 . IF-Cond . IF-Cond . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:27 . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:27 . IF-Else . IF-Else . . AS tc(1) # p.go:9:27 . . AS tc(1) # p.go:9:27 . . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:2 . . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:2 . . . INDEX bool tc(1) # p.go:9:31 . . . INDEX bool tc(1) # p.go:9:31 . . . . NAME-x.B Class:PEXTERN Offset:0 SLICE-[]bool tc(1) # p.go:3:5 . . . . NAME-x.B Class:PEXTERN Offset:0 SLICE-[]bool tc(1) # p.go:3:5 . . . . LITERAL-1 int tc(1) # p.go:9:32 . . . . LITERAL-1 int tc(1) # p.go:9:32 . AS tc(1) # p.go:9:4 . AS tc(1) # p.go:9:4 . . NAME-x._ Offset:0 blank tc(1) . . NAME-x._ Offset:0 blank tc(1) . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:27 . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:27 . VARKILL tc(1) # p.go:9:4 . VARKILL tc(1) # p.go:9:4 . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 . VARKILL tc(1) # p.go:9:4 . VARKILL tc(1) # p.go:9:4 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . VARKILL tc(1) # p.go:9:4 . VARKILL tc(1) # p.go:9:4 . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:27 . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:27 . AS tc(1) # p.go:10:11 . AS tc(1) # p.go:10:11 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x.p esc(no) Class:PPARAM Offset:0 OnStack Used bool tc(1) # p.go:6:8 . . NAME-x.p esc(no) Class:PPARAM Offset:0 OnStack Used bool tc(1) # p.go:6:8 . IF # p.go:10:11 . IF # p.go:10:11 . IF-Cond . IF-Cond . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . IF-Body . IF-Body . . AS tc(1) # p.go:10:11 . . AS tc(1) # p.go:10:11 . . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:1 . . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:1 . . . NAME-x.q esc(no) Class:PAUTO Offset:0 OnStack Used bool tc(1) # p.go:7:6 . . . NAME-x.q esc(no) Class:PAUTO Offset:0 OnStack Used bool tc(1) # p.go:7:6 . AS tc(1) # p.go:10:16 . AS tc(1) # p.go:10:16 . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 | . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:27 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . IF # p.go:10:16 . IF # p.go:10:16 . IF-Cond . IF-Cond . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 | . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:27 . IF-Body . IF-Body . . AS tc(1) # p.go:10:20 . . AS tc(1) # p.go:10:20 . . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:2 | . . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 . . . NAME-x.q esc(no) Class:PAUTO Offset:0 OnStack Used bool tc(1) # p.go:7:6 . . . NAME-x.q esc(no) Class:PAUTO Offset:0 OnStack Used bool tc(1) # p.go:7:6 . . AS tc(1) # p.go:10:16 . . AS tc(1) # p.go:10:16 . . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 | . . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:2 . . . INDEXMAP bool tc(1) # p.go:10:20 . . . INDEXMAP bool tc(1) # p.go:10:20 . . . . NAME-x.m esc(no) Class:PPARAM Offset:0 OnStack MAP-map[bool]bool tc(1) # p.go:6:16 . . . . NAME-x.m esc(no) Class:PPARAM Offset:0 OnStack MAP-map[bool]bool tc(1) # p.go:6:16 . . . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go | . . . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go . . VARKILL tc(1) # p.go:10:16 . . VARKILL tc(1) # p.go:10:16 . . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:2 | . . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 . RETURN tc(1) # p.go:10:2 . RETURN tc(1) # p.go:10:2 . RETURN-Results . RETURN-Results . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 | . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:27 . VARKILL tc(1) # p.go:3:5 . VARKILL tc(1) # p.go:3:5 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . VARKILL tc(1) # p.go:3:5 . VARKILL tc(1) # p.go:3:5 . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 | . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:27 after walk f after walk f . DCL # p.go:7:6 . DCL # p.go:7:6 . . NAME-x.q esc(no) Class:PAUTO Offset:0 OnStack Used bool tc(1) # p.go:7:6 . . NAME-x.q esc(no) Class:PAUTO Offset:0 OnStack Used bool tc(1) # p.go:7:6 . AS tc(1) # p.go:7:6 . AS tc(1) # p.go:7:6 . . NAME-x.q esc(no) Class:PAUTO Offset:0 OnStack Used bool tc(1) # p.go:7:6 . . NAME-x.q esc(no) Class:PAUTO Offset:0 OnStack Used bool tc(1) # p.go:7:6 . AS tc(1) # p.go:9:8 . AS tc(1) # p.go:9:8 . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 | . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 Addrtaken AutoTemp OnStack Used bool tc(1) # p. . . NAME-x.p esc(no) Class:PPARAM Offset:0 OnStack Used bool tc(1) # p.go:6:8 . . NAME-x.p esc(no) Class:PPARAM Offset:0 OnStack Used bool tc(1) # p.go:6:8 . IF # p.go:9:8 . IF # p.go:9:8 . IF-Cond . IF-Cond . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 | . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 Addrtaken AutoTemp OnStack Used bool tc(1) # p. . IF-Else . IF-Else . . AS tc(1) # p.go:9:8 . . AS tc(1) # p.go:9:8 . . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 | . . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 Addrtaken AutoTemp OnStack Used bool tc(1) . . . LT bool tc(1) # p.go:9:15 . . . LT bool tc(1) # p.go:9:15 . . . . AND int tc(1) # p.go:9:12 . . . . AND int tc(1) # p.go:9:12 . . . . . NAME-x.N Class:PEXTERN Offset:0 int tc(1) # p.go:4:5 . . . . . NAME-x.N Class:PEXTERN Offset:0 int tc(1) # p.go:4:5 . . . . . NAME-x.N Class:PEXTERN Offset:0 int tc(1) # p.go:4:5 . . . . . NAME-x.N Class:PEXTERN Offset:0 int tc(1) # p.go:4:5 . . . . NAME-x.N Class:PEXTERN Offset:0 int tc(1) # p.go:4:5 . . . . NAME-x.N Class:PEXTERN Offset:0 int tc(1) # p.go:4:5 . AS tc(1) # p.go:9:19 . AS tc(1) # p.go:9:19 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 | . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 Addrtaken AutoTemp OnStack Used bool tc(1) # p. . IF # p.go:9:19 . IF # p.go:9:19 . IF-Cond . IF-Cond . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . IF-Else . IF-Else . . AS tc(1) # p.go:9:19 . . AS tc(1) # p.go:9:19 . . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:1 . . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:1 . . . INDEX bool tc(1) # p.go:9:23 . . . INDEX bool tc(1) # p.go:9:23 . . . . NAME-x.B Class:PEXTERN Offset:0 SLICE-[]bool tc(1) # p.go:3:5 . . . . NAME-x.B Class:PEXTERN Offset:0 SLICE-[]bool tc(1) # p.go:3:5 . . . . LITERAL-0 int tc(1) # p.go:9:24 . . . . LITERAL-0 int tc(1) # p.go:9:24 . AS tc(1) # p.go:9:27 . AS tc(1) # p.go:9:27 . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 Addrtaken AutoTemp OnStack Used bool tc(1) # p. | . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:27 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . IF # p.go:9:27 . IF # p.go:9:27 . IF-Cond . IF-Cond . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 Addrtaken AutoTemp OnStack Used bool tc(1) # p. | . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:27 . IF-Else . IF-Else . . AS tc(1) # p.go:9:27 . . AS tc(1) # p.go:9:27 . . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 Addrtaken AutoTemp OnStack Used bool tc(1) | . . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:2 . . . INDEX bool tc(1) # p.go:9:31 . . . INDEX bool tc(1) # p.go:9:31 . . . . NAME-x.B Class:PEXTERN Offset:0 SLICE-[]bool tc(1) # p.go:3:5 . . . . NAME-x.B Class:PEXTERN Offset:0 SLICE-[]bool tc(1) # p.go:3:5 . . . . LITERAL-1 int tc(1) # p.go:9:32 . . . . LITERAL-1 int tc(1) # p.go:9:32 . AS tc(1) # p.go:9:4 . AS tc(1) # p.go:9:4 . . NAME-x._ Offset:0 blank tc(1) . . NAME-x._ Offset:0 blank tc(1) . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 Addrtaken AutoTemp OnStack Used bool tc(1) # p. | . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:27 . VARKILL tc(1) # p.go:9:4 . VARKILL tc(1) # p.go:9:4 . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 | . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 Addrtaken AutoTemp OnStack Used bool tc(1) # p. . VARKILL tc(1) # p.go:9:4 . VARKILL tc(1) # p.go:9:4 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . VARKILL tc(1) # p.go:9:4 . VARKILL tc(1) # p.go:9:4 . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 Addrtaken AutoTemp OnStack Used bool tc(1) # p. | . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:27 . AS tc(1) # p.go:10:11 . AS tc(1) # p.go:10:11 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x.p esc(no) Class:PPARAM Offset:0 OnStack Used bool tc(1) # p.go:6:8 . . NAME-x.p esc(no) Class:PPARAM Offset:0 OnStack Used bool tc(1) # p.go:6:8 . IF # p.go:10:11 . IF # p.go:10:11 . IF-Cond . IF-Cond . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . IF-Body . IF-Body . . AS tc(1) # p.go:10:11 . . AS tc(1) # p.go:10:11 . . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:1 . . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:1 . . . NAME-x.q esc(no) Class:PAUTO Offset:0 OnStack Used bool tc(1) # p.go:7:6 . . . NAME-x.q esc(no) Class:PAUTO Offset:0 OnStack Used bool tc(1) # p.go:7:6 . AS tc(1) # p.go:10:16 . AS tc(1) # p.go:10:16 . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 | . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:27 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . IF # p.go:10:16 . IF # p.go:10:16 . IF-Cond . IF-Cond . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 | . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:27 . IF-Body . IF-Body . . AS tc(1) # p.go:10:20 . . AS tc(1) # p.go:10:20 . . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 Addrtaken AutoTemp OnStack Used bool tc(1) | . . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 Addrtaken AutoTemp OnStack Used bool tc(1) . . . NAME-x.q esc(no) Class:PAUTO Offset:0 OnStack Used bool tc(1) # p.go:7:6 . . . NAME-x.q esc(no) Class:PAUTO Offset:0 OnStack Used bool tc(1) # p.go:7:6 . . AS tc(1) # p.go:10:16 . . AS tc(1) # p.go:10:16 . . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 | . . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:2 . . . DEREF bool tc(1) # p.go:10:20 . . . DEREF bool tc(1) # p.go:10:20 . . . . CALLFUNC NonNil Walked PTR-*bool tc(1) # p.go:10:20 . . . . CALLFUNC NonNil Walked PTR-*bool tc(1) # p.go:10:20 . . . . . NAME-runtime.mapaccess1 Class:PFUNC Offset:0 Used FUNC-func(*byte, map[bool]bool, . . . . . NAME-runtime.mapaccess1 Class:PFUNC Offset:0 Used FUNC-func(*byte, map[bool]bool, . . . . CALLFUNC-Args . . . . CALLFUNC-Args . . . . . ADDR PTR-*uint8 tc(1) # p.go:10:20 . . . . . ADDR PTR-*uint8 tc(1) # p.go:10:20 . . . . . . LINKSYMOFFSET Offset:0 uint8 tc(1) . . . . . . LINKSYMOFFSET Offset:0 uint8 tc(1) . . . . . NAME-x.m esc(no) Class:PPARAM Offset:0 OnStack Used MAP-map[bool]bool tc(1) # p.g . . . . . NAME-x.m esc(no) Class:PPARAM Offset:0 OnStack Used MAP-map[bool]bool tc(1) # p.g . . . . . ADDR PTR-*bool tc(1) # p.go:10:20 . . . . . ADDR PTR-*bool tc(1) # p.go:10:20 . . . . . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 Addrtaken AutoTemp OnStack Used | . . . . . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 Addrtaken AutoTemp OnStack Used . . VARKILL tc(1) # p.go:10:16 . . VARKILL tc(1) # p.go:10:16 . . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 Addrtaken AutoTemp OnStack Used bool tc(1) | . . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 Addrtaken AutoTemp OnStack Used bool tc(1) . RETURN tc(1) # p.go:10:2 . RETURN tc(1) # p.go:10:2 . RETURN-Results . RETURN-Results . . AS tc(1) # p.go:10:2 . . AS tc(1) # p.go:10:2 . . . NAME-x.~r0 esc(no) Class:PPARAMOUT Offset:0 OnStack bool tc(1) # p.go:6:33 . . . NAME-x.~r0 esc(no) Class:PPARAMOUT Offset:0 OnStack bool tc(1) # p.go:6:33 . . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 | . . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:2 . VARKILL tc(1) # p.go:3:5 . VARKILL tc(1) # p.go:3:5 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . . NAME-x..autotmp_5 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:19 . VARKILL tc(1) # p.go:3:5 . VARKILL tc(1) # p.go:3:5 . . NAME-x..autotmp_6 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:8 | . . NAME-x..autotmp_4 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # p.go:9:27 |
Change https://golang.org/cl/357961 mentions this issue: |
I don't think the autotmp ordering thing is the problem, it just tickles the compiler in the right way to hit an existing bug. It looks to me like this is a problem with the late fuse pass. Before the pass, I see:
After that pass, I see:
Note that If you run with
@erifan who touched fuse last and might have some ideas. |
So it's likely that 92d1afe is the culprit. I can compile the program after reverting it. |
Yeah, I found the bug. In
But Kind of unfortunate different behavior in things named similarly. |
Huh, tricky. Seems that all we need to do is:
instead of |
Yep. |
Change https://golang.org/cl/358117 mentions this issue: |
@gopherbot please open a backport issue for 1.17. |
Backport issue(s) opened: #49129 (for 1.17). Remember to create the cherry-pick CL(s) as soon as the patch is submitted to master, according to https://golang.org/wiki/MinorReleases. |
The program compiles fine in Go1.17.
git bisect
points to ed647b1. I'm tentatively labeling this as a release blocker since it's a compiler crasher on a valid program introduced during the current development cycle.cc @mdempsky
cc @randall77 @dr2chase for regalloc.
The text was updated successfully, but these errors were encountered: