Age | Commit message (Collapse) | Author | Files | Lines |
|
Several recent changes to the gc version of cmd/go improve the
gofrontend support. These changes are partially copies of existing
gofrontend differences, and partially new code. This CL makes the
gofrontend match the upstream code.
The changes included here come from:
https://golang.org/cl/111575
https://golang.org/cl/111595
https://golang.org/cl/111635
https://golang.org/cl/111636
For the record, the following recent gc changes are based on code
already present in the gofrontend repo:
https://golang.org/cl/110915
https://golang.org/cl/111615
For the record, a gc change, partially based on earlier gofrontend
work, also with new gc code, was already copied to gofrontend repo in
CL 111099:
https://golang.org/cl/111097
This moves the generated list of standard library packages from
cmd/go/internal/load to go/build.
Reviewed-on: https://go-review.googlesource.com/112475
gotools/:
* Makefile.am (check-go-tool): Don't copy zstdpkglist.go.
* Makefile.in: Rebuild.
From-SVN: r260097
|
|
Reviewed-on: https://go-review.googlesource.com/111535
From-SVN: r259946
|
|
Change code to work properly reading unaligned data on architectures
that don't support unaliged reads. This fixes a regression (broke
Solaris/sparc) introduced in https://golang.org/cl/90235.
Reviewed-on: https://go-review.googlesource.com/111296
From-SVN: r259935
|
|
Update mkalldocs.sh from the current master sources, replacing the old
mkdoc.sh.
Reviewed-on: https://go-review.googlesource.com/111096
From-SVN: r259920
|
|
Since gofrontend does have the vet tool now, we can test it.
Reviewed-on: https://go-review.googlesource.com/111095
From-SVN: r259919
|
|
In https://golang.org/cl/111097 the gc version of cmd/go was updated
to include some gofrontend-specific changes. The gofrontend code
already has different versions of those changes; this CL makes the
gofrontend match the upstream code.
Reviewed-on: https://go-review.googlesource.com/111099
From-SVN: r259918
|
|
Tweak the array type checking code to avoid crashing on array types
whose length expressions are explicit non-integer types (for example,
"float64(10)"). If such constructs are seen, issue an "invalid array
bound" error.
Fixes golang/go#13486.
Reviewed-on: https://go-review.googlesource.com/91975
From-SVN: r259900
|
|
These tests used to be disabled in the gofrontend since the go tool
didn't support build IDs for the gofrontend. It does now, so enable
the tests again.
Reviewed-on: https://go-review.googlesource.com/111098
From-SVN: r259875
|
|
This patch adds explicit references to various types and constants
defined by the header files included by sysinfo.c (used to drive the
generation of gen-sysinfo.go as part of the libgo build via the GCC
"-fdump-go-spec" option).
The intent is to enable clients to gather the same info generated by
"-fdump-go-spec" by instead reading the generated DWARF from a
sysinfo.o object file compiled with "-g". Some compilers (notably
clang) try to omit DWARF records for a given type unless there is an
explicit use of it in the translation unit; the additional references
are to insure that everything we want to see in the DWARF shows up.
Reviewed-on: https://go-review.googlesource.com/99063
From-SVN: r259868
|
|
Reviewed-on: https://go-review.googlesource.com/90775
From-SVN: r259866
|
|
PR go/85429
cmd/go: support more Solaris assembler syntaxes
Patch by Rainer Orth.
Reviewed-on: https://go-review.googlesource.com/110563
From-SVN: r259797
|
|
PR go/85429
cmd/go: add Solaris assembler syntax for gccgo buildid file
The Solaris assembler uses a different syntax for section directives.
This is https://golang.org/cl/109140 ported over to gccgo.
Reviewed-on: https://go-review.googlesource.com/109141
From-SVN: r259719
|
|
Reviewed-on: https://go-review.googlesource.com/108457
From-SVN: r259531
|
|
Bring in https://golang.org/cl/98616 from gc tip.
Original CL description:
This change modifies Go to disable loading of users' shell history for
TestTerminalSignal tests. TestTerminalSignal, as part of its workload,
will execute a new interactive bash shell. Bash will attempt to load the
user's history from the file pointed to by the HISTFILE environment
variable. For users with large histories that may take up to several
seconds, pushing the whole test past the 5 second timeout and causing
it to fail.
Reviewed-on: https://go-review.googlesource.com/107624
From-SVN: r259452
|
|
Reviewed-on: https://go-review.googlesource.com/100955
From-SVN: r259445
|
|
The gccgo runtime is never stale, and on a system with gc sources in
~/go the test may wind up checking whether the gc runtime is stale.
Reviewed-on: https://go-review.googlesource.com/102282
From-SVN: r258865
|
|
Also add noinst_DATA to CHECK_DEPS; it's not needed in practice since
`make` will build noinst_DATA, but it's logically required and will
make a difference if any of the noinst_DATA sources change between
`make` and `make check`.
Tony Reix figured out why omitting packages from noinst_DATA didn't
seem to matter: because if gccgo can't find foo.gox, it will fall back
to reading the export data in foo.o, and foo.o will exist because
these packages go into libgo.a.
Reviewed-on: https://go-review.googlesource.com/101077
From-SVN: r258606
|
|
Tested by installing the gcc-locales package and running
LANG=de_DE.utf8 go build hello.go
Without this change, that fails, as described at
https://gcc.gnu.org/PR84765.
Reviewed-on: https://go-review.googlesource.com/100737
From-SVN: r258565
|
|
Makefile: add internal/trace to noinst_DATA
The internal/trace package is only imported by tests (specifically the
tests in runtime/trace) so it must be in noinst_DATA to ensure that it
is built before running the tests.
This was mostly working because internal/trace has tests itself, and
is listed in check-packages.txt before runtime/trace, so typical
invocations of make would build internal/trace for checking purposes
before checking runtime/trace. But we need this change to make that
reliable.
Reviewed-on: https://go-review.googlesource.com/99836
From-SVN: r258392
|
|
Reviewed-on: https://go-review.googlesource.com/99117
From-SVN: r258337
|
|
This implements the same choices made in the gc runtime, except that
for 32-bit x86 we only use the fence instruction if the processor
supports SSE2.
The code here is hacked up for speed; the gc runtime uses straight
assembler.
Reviewed-on: https://go-review.googlesource.com/97715
From-SVN: r258336
|
|
Fix a small typo in the mksysinfo.sh script (incorrect input
file for a grep command).
Reviewed-on: https://go-review.googlesource.com/98635
From-SVN: r258259
|
|
The compiler was crashing partway through emitting an error for a bad
self-referential struct type (which refers to one of its own fields
via an unsafe.Offset expression). Tweak the offset logic to check for
this class of type error and exit cleanly.
Fixes golang/go#24180
Reviewed-on: https://go-review.googlesource.com/97855
From-SVN: r258112
|
|
Reviewed-on: https://go-review.googlesource.com/97357
From-SVN: r258052
|
|
Reviewed-on: https://go-review.googlesource.com/97517
From-SVN: r258051
|
|
We want to track references to fields in the real struct, not in
aliases to the struct.
Reviewed-on: https://go-review.googlesource.com/96816
From-SVN: r257954
|
|
Copy the idea of https://golang.org/cl/92756 to funcfileline, which is
used by runtime.FuncForPC, runtime.(*Frames).Next, and others.
Reviewed-on: https://go-review.googlesource.com/96175
From-SVN: r257913
|
|
Fixes https://gcc.gnu.org/PR84484
Reviewed-on: https://go-review.googlesource.com/95436
From-SVN: r257911
|
|
Let a fast syscall return be a preemption point. This helps with
tight loops that make system calls, as in BenchmarkSyscallExcessWork.
Reviewed-on: https://go-review.googlesource.com/94895
From-SVN: r257848
|
|
Aliases are supposed to be identical to the type being aliased, so
questions about type compatibility need to always ignore aliases,
except for error messages involving the type name.
The test case for this is https://golang.org/cl/94995.
Fixes golang/go#23912
Reviewed-on: https://go-review.googlesource.com/94996
From-SVN: r257845
|
|
In particular this lets BenchmarkPingPongHog in runtime/proc_test.go
complete.
Reviewed-on: https://go-review.googlesource.com/94735
From-SVN: r257743
|
|
They aren't needed, and could potentially cause unlikely symbol name
collisions. Also, the runtime package's reference to main could cause
the runtime package to define main.main..f, which could also be
defined in the main package if it does something like fmt.Print(main).
That will normally work but will fail with a multiple symbol
definition error when using -static-libgo.
Reviewed-on: https://go-review.googlesource.com/93656
From-SVN: r257637
|
|
Long long long ago Go permitted writing
func F()
in one file and writing
func F() {}
in another file. This was removed from the language, and that is now
considered to be a multiple definition error. Gccgo never caught up
to that, and it has been permitting this invalid code for some time.
Stop permitting it, so that we give correct errors. Since we've
supported it for a long time, the compiler uses it in a couple of
cases: it predeclares the hash/equal methods if it decides to create
them while compiling another function, and it predeclares main.main as
a mechanism for getting the right warning if a program uses the wrong
signature for main. For simplicity, keep those existing uses.
This required a few minor changes in libgo which were relying,
unnecessarily, on the current behavior.
Reviewed-on: https://go-review.googlesource.com/93083
From-SVN: r257600
|
|
PR go/84215
runtime, sync/atomic: use write barrier for atomic pointer functions
This copies atomic_pointer.go from 1.10rc2. It was omitted during the
transition of the runtime from C to Go, and I forgot about it.
This may help with https://gcc.gnu.org/PR84215.
Reviewed-on: https://go-review.googlesource.com/93197
From-SVN: r257599
|
|
The magic //go:nointerface comment, used for field tracking, was only
implemented for conversions to interface types in the same package.
Record it in the export data, so that it works as expected for types
imported from a different package.
Reviewed-on: https://go-review.googlesource.com/93075
From-SVN: r257540
|
|
If we trace back through code that has no debug info, as when calling
through C code compiled with -g0, we won't have a function name.
Try to fetch the function name using the symbol table.
Adding the test case revealed that gotest failed to use the gccgo tag
when matching files, so add that.
Reviewed-on: https://go-review.googlesource.com/92756
From-SVN: r257495
|
|
Reviewed-on: https://go-review.googlesource.com/92736
From-SVN: r257493
|
|
The escape analysis support is not yet good enough to avoid escaping
the argument to funcPC. This causes unnecessary and often harmful
memory allocation. E.g., (*cpuProfile).addExtra can be called from a
signal handler, and it must not allocate memory.
Move the calls to funcPC to use variables instead. This was done in
the original migration to using funcPC, but was not done for newer code.
In one case, in signal handling code, use getSigtramp.
Reviewed-on: https://go-review.googlesource.com/92735
From-SVN: r257463
|
|
Normally we ensure to build a single Btype for identical types.
We did not do this for methods table of identical interface
types, however. If there are two identical interface type I, I2,
they have the same Btype BI, but different Btypes for their
methods tables, BM and BM2. From the backend's point of view
only one of them is linked to BI. This can cause inconsitency
in the backend's type system, like unresolved placeholder. This
CL ensures we create a single Btype for methods table of
identical interface type.
Reviewed-on: https://go-review.googlesource.com/92436
From-SVN: r257436
|
|
Check for negative numbers with very small magnitudes that will round
to negative zero, and force them to positive zero instead.
This implements the spec clarification in https://golang.org/cl/14727.
The test is in https://golang.org/cl/91895.
Fixes golang/go#12621
Reviewed-on: https://go-review.googlesource.com/92175
From-SVN: r257415
|
|
The offset field in structfield has changed to offsetAnon, and now
requires a shift to get the actual offset value.
Fixes golang/go#23391
Reviewed-on: https://go-review.googlesource.com/92275
From-SVN: r257413
|
|
It uses functions that are not available in MPFR 2.4.2, which is the
current version supported by GCC.
Original change description:
compiler: avoid negative zero in float constants
Check for negative numbers with very small magnitudes that will round
to negative zero, and force them to positive zero instead.
This implements the spec clarification in https://golang.org/cl/14727.
The test is in https://golang.org/cl/91895.
Fixes golang/go#12621
Updates golang/go#12621
Reviewed-on: https://go-review.googlesource.com/92055
From-SVN: r257393
|
|
Check for negative numbers with very small magnitudes that will round
to negative zero, and force them to positive zero instead.
This implements the spec clarification in https://golang.org/cl/14727.
The test is in https://golang.org/cl/91895.
Fixes golang/go#12621
Reviewed-on: https://go-review.googlesource.com/91915
From-SVN: r257390
|
|
CL 71750 changed the definition of how iota works. This patch updates
gccgo for the new definition.
We've been mishandling iota appearing in a type that appears in a
const expression, as in `c = len([iota]int{})`. Correct that by copying
type expressions when we copy an expression. For simplicity only copy
when it can change the size of a type, as that is the only case where
iota in a type can affect the value of a constant (I think). This is
still a bunch of changes, but almost all boilerplate.
Fixes golang/go#22341
Reviewed-on: https://go-review.googlesource.com/91475
From-SVN: r257379
|
|
The language spec permits empty statements after a fallthrough
statement, so implement that. Also give a better error message when a
fallthrough statement is in the wrong place. The test case for this
is in the master repository, test/fixedbugs/issue14540.go, just not
yet in the gccgo repository.
Fixes golang/go#14538
Reviewed-on: https://go-review.googlesource.com/91855
From-SVN: r257378
|
|
The last change was incomplete, in that it did not evaluate the array
argument in some cases where it had to be evaluated. This reuses the
existing code for checking whether len/cap is constant.
Also clean up the use of _ as the second variable in a for/range,
which was previously inconsistent depending on whether the statement
used = or :=.
Updates golang/go#22313
Reviewed-on: https://go-review.googlesource.com/91715
From-SVN: r257377
|
|
This implements a requirement of the language spec.
While we're here fix the value returned by the type method of a
builtin call expression to make, although this doesn't seem to make
any difference anywhere since we lower this to a runtime call before
the determine_types pass anyhow.
There is already a test for this error in the master repository:
test/fixedbugs/issue16949.go. It just hasn't made it into the gccgo
testsuite yet.
Fixes golang/go#16949
Reviewed-on: https://go-review.googlesource.com/91697
From-SVN: r257376
|
|
We should only issue an error for a goto over a var declaration.
The test case for this is already in the master repository, at
test/fixedbugs/issue8042.go. It just hasn't been copied into the
gccgo repository yet.
Fixes golang/go#19089
Reviewed-on: https://go-review.googlesource.com/91696
From-SVN: r257375
|
|
We used to mishandle `select { case (<-c): }` and friends.
The test case for this is https://golang.org/cl/91657.
Fixes golang/go#20923
Reviewed-on: https://go-review.googlesource.com/91695
From-SVN: r257374
|
|
The quoting code that read _cgo_flags, currently only in the gccgo
version of cmd/go, was losing the last flag read from the file.
Fixes golang/go#23666
Reviewed-on: https://go-review.googlesource.com/91655
From-SVN: r257373
|