Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
This does not yet include support for the //go:embed directive added
in this release.
* Makefile.am (check-runtime): Don't create check-runtime-dir.
(mostlyclean-local): Don't remove check-runtime-dir.
(check-go-tool, check-vet): Copy in go.mod and modules.txt.
(check-cgo-test, check-carchive-test): Add go.mod file.
* Makefile.in: Regenerate.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/280172
|
|
Avoid the ambiguity between "chan <- (chan int)" and "chan (<- chan int)".
This parenthesizes the same way as the gc compiler.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279961
|
|
The compiler was treating indirections through pointers that had been
explicitly checked against nil and slice and string index expressions
as non-trapping memory references. That is true for ordinary Go
programs, but it isn't true if the programs construct their own memory
addresses. In particular it isn't true for the kinds of programs that
want to use runtime.SetPanicOnFault.
The effect of this will be slightly larger binaries, due to additional
exception information, and perhaps slightly less optimization.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279960
|
|
The only calls to the runtime functions were removed in CL 170005.
The slicestringcopy function will be removed in the Go 1.16beta1 release.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279932
|
|
The C++ compiler wasn't warning because we take their address.
Fixes golang/go#43252
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279752
|
|
This is the gofrontend version of https://golang.org/cl/245125.
Original CL description:
Currently, we include a "kind" field on scase to distinguish the three
kinds of cases in a select statement: sends, receives, and defaults.
This commit removes by kind field by instead arranging for the
compiler to always place sends before receives, and to provide their
counts separately. It also passes an explicit "block bool" parameter
to avoid needing to include a default case in the array.
It's safe to shuffle cases like this because the runtime will
randomize the order they're polled in anyway.
For golang/go#40410.
This is being brought over to gofrontend as a step toward upgrading to
Go1.16beta1.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279735
|
|
This is the gofrontend version of https://golang.org/cl/245019.
Original CL description:
The current wakeup protocol for channel communications is that the
second goroutine sets gp.param to the sudog when a value is
successfully communicated over the channel, and to nil when the wakeup
is due to closing the channel.
Setting nil to indicate channel closure works okay for chansend and
chanrecv, because they're only communicating with one channel, so they
know it must be the channel that was closed. However, it means
selectgo has to re-poll all of the channels to figure out which one
was closed.
This commit adds a "success" field to sudog, and changes the wakeup
protocol to always set gp.param to sg, and to use sg.success to
indicate successful communication vs channel closure.
While here, this also reorganizes the chansend code slightly so that
the sudog is still released to the pool if the send blocks and then is
awoken because the channel closed.
For golang/go#40410
This is being brought over to gofrontend as a step toward upgrading to
Go1.16beta1, setting up for more compiler changes related to select handling.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279734
|
|
This is the gofrontend version of https://golang.org/cl/245123.
Original CL description:
Currently, selectgo does an initial pass over the cases array to look
for entries with nil channels, so they can be easily recognized and
skipped later on. But this still involves actually visiting the cases.
This commit changes selectgo to omit cases with nil channels when
constructing pollorder, so that they'll be skipped over entirely later
on. It also checks for caseDefault up front, which will facilitate
changing it to use a "block bool" parameter instead.
Updates golang/go#40410
This is being brought over to gofrontend as a step toward upgrading to
Go1.16beta1, setting up for more compiler changes related to select handling.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279733
|
|
This is the gofrontend version of https://golang.org/cl/245122.
Original CL description:
selectgo will report at most one block event, so there's no need to
keep a releasetime for every select case. It suffices to simply track
the releasetime of the case responsible for the wakeup.
Updates golang/go#40410.
This is being brought over to gofrontend as a step toward upgrading to
Go1.16beta1.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279732
|
|
The -fdump-go-spec flag to GCC recently changed to be more fastidious
about handling incomplete types. This caused some breakage in
mk[r]sysinfo.sh on Solaris. This commit adjusts for the new behavior.
Specifically:
* Types that refer to _in6_addr may be hidden behind a typedef and can
no longer be filtered out with `grep -v in6_addr`. Instead just
rewrite the definition of _in6_addr to [16]byte wherever it appears.
* timestruc_t is now (correctly) emitted as an alias for timespec, so this
case is handled specially.
* stdio.h is included in sysinfo.c to avoid emitting an incomplete
definition of the FILE type.
* Dummy definitions for _u?pad128_t are now emitted automatically,
which conflict with the definitions installed by mk[r]sysinfo.sh.
These definitions were actually dead code, so just remove them.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/278672
|
|
Adjust mksysinfo and mkrsysinfo to strip out floating-point max numbers,
as they can trigger this error.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/278476
|
|
For golang/go#43200
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/278452
|
|
The test case for this is issue11614.go.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/278192
|
|
This is specifically for the test fixedbugs/issue23781.go, which
builds a large static array. The code does compile and work without
this change, but it takes a long time and generates a large object
file. Discarding the unnecessary static initializer makes this test
much faster.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/278172
|
|
A digit character is not invalid in general, but it's not permitted
at the start of an identifier. Report a better error message.
The test case is issue11359.go in the source repo.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/278174
|
|
Avoid putting weird characters into the user visible name.
It breaks stabs in particular, and may also cause debugger problems.
Instead, encode those names, and use a "g." prefix to tell the debugger.
Also dereference the type for the name of a recover thunk, to avoid a
pointless '*' that gets encoded.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/277232
|
|
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/276153
|
|
Also check for valid array length when reducing len/cap to a constant.
For golang/go#8183
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/275654
|
|
Patch from Svante Signell.
Fixes PR go/98153
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/275939
|
|
To make this work from the do_type method, add "byte" and "rune" to
the list of known integer types, and look them up that way rather than
via gogo->lookup_global.
For golang/go#8745
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/275653
|
|
The test case is https://golang.org/cl/275632.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/275652
|
|
We were using the old name, but nothing noticed because it is a weak
reference that is permitted to be nil, so that it works with code that
does not use the field tracking library.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/275449
|
|
Otherwise cases like
type mybool bool
var b mybool = [10]string{} == [10]string{}
get an incorrect type checking error.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/274446
|
|
Go used to use slightly different semantics than C99 for complex division,
so we used runtime routines to handle the different. The gc compiler
has changes its behavior to match C99, so changes ours as well.
For golang/go#14644
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/274213
|
|
This is a gofrontend copy of https://golang.org/cl/203282.
From the CL 203282 description:
"declared and not used" is technically correct, but might confuse
the user. Switching "and" to "but" will hopefully create the
contrast for the users: they did one thing (declaration), but
not the other --- actually using the variable.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/273629
|
|
Use the same error as the current gc compiler.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/273628
|
|
We've already read the unexpected semicolon, so advancing again causes
us to skip the next token, causing future errors to be out of sync.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/274439
|
|
For libgo the definition comes from the generated file cpugen.go.
Fixes PR go/98041
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/273866
|
|
The overflow checks done in growslice always reported an error for the
capacity argument, even if it was the length argument that overflowed.
This change lets the code pass the current issue4085b.go test.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/273806
|
|
Fixes golang/go#42872
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/273892
|
|
For golang/go#17328
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/273890
|
|
For "a, b := v.(T)" we must set a before b.
For golang/go#13433
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/273906
|
|
For golang/go#14844
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/273889
|
|
For golang/go#10700
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/273886
|
|
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/273867
|
|
Mark bad types as erroneous, to avoid generating further errors.
This required some code using array types to check for errors.
For https://golang.org/issue/19880
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/273626
|
|
Was
assign.go:59:28: error: multiple assignments to x
Now
assign.go:59:28: error: ‘x’ repeated on left side of :=
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/273546
|
|
In the conversion of a constant integer to a string type, the value of
the constant integer was being silently truncated from unsigned long
to unsigned int, producing the wrong string value. Add an explicit
overflow check to avoid this problem.
For golang/go#42790
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/272611
|
|
Patch from Rainer Orth.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/272259
|
|
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/272146
|
|
Overhaul the mangling scheme to avoid ambiguities if the package path
contains a dot. Instead of using dot both to separate components and
to mangle characters, use dot only to separate components and use
underscore to mangle characters.
For golang/go#41862
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/271726
|
|
This is a port of two patches in the master repository.
https://golang.org/cl/259298
cmd/cgo: split gofrontend mangling checks into cmd/internal/pkgpath
This is a step toward porting https://golang.org/cl/219817 from the
gofrontend repo to the main repo.
Note that this also corrects the implementation of the v2 mangling
scheme to use ..u and ..U where appropriate.
https://golang.org/cl/259299
cmd/go: use cmd/internal/pkgpath for gccgo pkgpath symbol
For golang/go#37272
For golang/go#41862
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/270637
|
|
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/268177
|
|
On NetBSD, for backwards compatibility, various libc symbols are
renamed to a symbol with a version suffix. For example, this is the
(abbreviated) definition of sigaction:
int sigaction(...) __asm__ ("__sigaction14")
This poses a challenge for libgo, which attempts to link sigaction by
way of an "//extern" comment:
//extern sigaction
func sigaction(...)
This results in a reference to the deprecated compatibility symbol
"sigaction", rather than the desired "__sigaction14" symbol.
This patch introduces a new "//extern-sysinfo" comment to handle this
situation. The new mklinknames.awk script scans a package for these
comments and outputs a "//go:linkname" directive that links the wrapper
to the correct versioned symbol, as determined by parsing the __asm__
annotation on the function's declaration in gen-sysinfo.go.
For now, only the following packages are scanned by mklinknames.awk:
os
os/user
runtime
syscall
gotools/:
* Makefile.am (check-runtime): Add runtime_linknames.go to
--extrafiles.
* Makefile.in: Regenerate.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/265125
|
|
This new file was based on master sources that are built for *BSD
but not Solaris
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/266017
|
|
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/265717
|
|
This is the gofrontend version of https://golang.org/cl/259297.
This is required now because that change is in the 1.15.3 release.
This requires changing the go/internal/gccgoimporter package, to skip
the new annotation. This change will need to be ported to the gc and
x/tools repos.
For golang/go#41761
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/265258
|
|
This member variable was added in https://golang.org/cl/46490, but it
was never used. The code uses Named_type::in_heap_ instead.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/265257
|
|
Import additional code from upstream for handing system
calls on BSD systems. This makes the syscall package on
NetBSD complete enough to compile the standard library.
Updates golang/go#38538.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/265123
|