Age | Commit message (Collapse) | Author | Files | Lines |
|
glibc 2.28 removes ustat.h and the ustat function entirely, which
breaks syscall.Ustat.
Updates golang/go#25990
Reviewed-on: https://go-review.googlesource.com/120535
From-SVN: r261896
|
|
Port https://golang.org/cl/120375 over to the gofrontend repo so that
it gets more reliable testing.
Updates golang/go#22472
Reviewed-on: https://go-review.googlesource.com/120395
From-SVN: r261871
|
|
The traversal used by the write barrier insertion phase can sometimes
wind up visiting new statements inserted during the traversal, which
then results in duplicate / redundant write barrier guards. Example
program to reproduce:
package small
type S struct {
N *S
K int
}
var G *S = &S{N: nil, K: 101}
This patch changes the traversal code to keep track of statements
already added and avoid processing them again later in the traversal.
Fixes golang/go#25867
Reviewed-on: https://go-review.googlesource.com/118637
From-SVN: r261568
|
|
Dump out the blocks corresponding to variable pre-inits when
-fgo-dump-ast is in effect. Each preinit block is prefixed with a
comment indicating the variable it is initializing.
Reviewed-on: https://go-review.googlesource.com/118636
From-SVN: r261555
|
|
Reviewed-on: https://go-review.googlesource.com/118495
From-SVN: r261549
|
|
Incorporates cut down versions of https://golang.org/cl/102835 and
https://golang.org/cl/106256 from the master sources.
This will tell go/build to skip files with those tags.
Reviewed-on: https://go-review.googlesource.com/117996
From-SVN: r261451
|
|
Now we make temporaries for allocations on stack (CL 86242). This
function is no longer used. Remove.
Reviewed-on: https://go-review.googlesource.com/92618
* go-gcc.cc (class Gcc_backend): Remove
stack_allocation_expression method.
From-SVN: r261353
|
|
The compiler used to do variable initializer sorting by looping
through all the initialized variables and, for each one, looping
through all the initialized variables and checking for a dependency.
For very large packages with thousands of initialized global
variables, this quadratic loop could take quite a long time.
Change the approach to first loop through all the initialized
variables and fetch all the references to other variables from the
initialization code. Then, loop through them again and this time add
a dependency for each referenced, initialized, variable, while
checking for initialization loops. We still have a nested loop, but
this time the inner loop should normally be short--just the list of
referenced variables, not the list of all variables.
Reviewed-on: https://go-review.googlesource.com/116816
From-SVN: r261284
|
|
Adjust the hash and string fields computed by StructOf to match the
values that the compiler computes for a struct type with the same
field names and types. This makes the reflect code match the
compiler's Type::hash_for_method and Type::reflection methods.
Fixes golang/go#25284
Reviewed-on: https://go-review.googlesource.com/116515
From-SVN: r261235
|
|
Background: since gccgo does not currently merge identical types at link time,
the reflect function canonicalize() exists to choose a canonical specimen
for each set of identical types.
In this way, user code has the guarantee that identical types
will always compare as ==
Change: arrange reflect functions MapOf(), SliceOf(), StructOf() etc.
to call canonicalize() on the types they create, before storing the types
in internal lookup caches and returning them.
This fixes known cases where canonicalize() is needed but was missing.
Supersedes https://golang.org/cl/112575 and mostly fixes issue 25284.
Updates golang/go#25284
Reviewed-on: https://go-review.googlesource.com/115577
From-SVN: r261216
|
|
This patch fixes type traversal to avoid compiler crashes for test
cases where a type T includes an expression that refers back to the
type without actually explicitly mentioning T. Examples include
var x [uintptr(unsafe.Sizeof(&x))]byte
var a [len(a)]int
The fix involves expanding the set of types that the traversal code
"remembers" (to avoid cycles) to include array types, and introducing an
additional guard in Builtin_call_expression::do_is_constant to catch
cyclic type constructs.
Fixes golang/go#25299
Fixes golang/go#25679
Fixes golang/go#25315
Fixes golang/go#25680
Reviewed-on: https://go-review.googlesource.com/115796
From-SVN: r261168
|
|
Reviewed-on: https://go-review.googlesource.com/115196
From-SVN: r261041
|
|
Backport https://golang.org/cl/113715 and https://golang.org/cl/113716:
cmd/go: don't pass -compiler flag to vet
Without this running go vet -compiler=gccgo causes vet to fail.
The vet tool does need to know the compiler, but it is passed in
vetConfig.Compiler.
cmd/go, cmd/vet, go/internal/gccgoimport: make vet work with gccgo
When using gccgo/GoLLVM, there is no package file for a standard
library package. Since it is impossible for the go tool to rebuild the
package, and since the package file exists only in the form of a .gox
file, this seems like the best choice. Unfortunately it was confusing
vet, which wanted to see a real file. This caused vet to report errors
about missing package files for standard library packages. The
gccgoimporter knows how to correctly handle this case. Fix this by
1) telling vet which packages are standard;
2) letting vet skip those packages;
3) letting the gccgoimporter handle this case.
As a separate required fix, gccgo/GoLLVM has no runtime/cgo package,
so don't try to depend on it (as it happens, this fixes golang/go#25324).
The result is that the cmd/go vet tests pass when using -compiler=gccgo.
Reviewed-on: https://go-review.googlesource.com/114516
From-SVN: r260913
|
|
Reviewed-on: https://go-review.googlesource.com/113179
From-SVN: r260908
|
|
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
|