aboutsummaryrefslogtreecommitdiff
path: root/gcc/go
AgeCommit message (Collapse)AuthorFilesLines
2020-09-22compiler: call runtime.eqtype for non-interface type switch on aixClément Chigot3-12/+21
All type switch clauses must call runtime.eqtype if the linker isn't able to merge type descriptors pointers. Previously, only interface-type clauses were doing it. Updates golang/go#39276 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/255202
2020-09-21compiler: finalize methods for type aliases of struct typesIan Lance Taylor3-21/+35
Previously we would finalize the methods of the alias type itself, but since its a type alias we really need to finalize the methods of the aliased type. Also, handle method expressions of unnamed struct types. Test case is https://golang.org/cl/251168. Fixes golang/go#38125 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/251279
2020-09-21go/internal/gccgoimporter: recognize aixbigafMagic archivesClément Chigot1-1/+1
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/255201
2020-09-21libgo: don't put golang.org packages in zstdpkglist.goIan Lance Taylor1-1/+1
This ensures that internal/goroot.IsStandardPackage does not treat golang.org packages as being in the standard library. For golang/go#41368 Fixes golang/go#41499 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/256319
2020-09-17libgo: fix ptrace syscall hooks into glibcPaul E. Murphy1-1/+1
ptrace is actually declared as a variadic function. On ppc64le the ABI requires to the caller to allocate space for the parameters and allows the caller to modify them. On ppc64le, depending on how and what version of GCC is used, it will save to parameter save area. This happened to clobber a saved LR, and caused syscall.TestExecPtrace to fail with a timeout when the tracee segfaults, and waits for the parent process to inspect. Wrap this function to avoid directly calling glibc's ptrace from go. Fixes golang/go#36698 Fixes go/92567 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/254755
2020-09-15libgo: additional type/const references in sysinfo.cThan McIntosh1-1/+1
Add a few more explicit references to enumeration constants (RUSAGE_SELF, DT_UNKNOWN) in sysinfo.c to insure that their hosting enums are emitted into DWARF, when using a clang host compiler during the gollvm build. Updates golang/go#41382. Updates golang/go#41404. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/254941
2020-09-15Daily bump.GCC Administrator1-0/+6
2020-09-14options: Save and restore opts_set for Optimization and Target optionsJakub Jelinek1-3/+5
> Seems a latent issue. > Neither cl_optimization_{save,restore} nor cl_target_option_{save,restore} > (nor any of the target hooks they call) saves or restores any opts_set > values, so I think opts_set can be trusted only during option processing (if > at all), but not later. > So, short term a fix would be IMHO just stop using opts_set altogether in > arm_configure_build_target, it doesn't make much sense to me, it should test > if those strings are non-NULL instead, or at least do that when it is > invoked from arm_option_restore (e.g. could be done by calling it with > opts instead of &global_options_set ). > Longer term, the question is if cl_optimization_{save,restore} and > cl_target_option_{save,restore} shouldn't be changed not to only > save/restore the options, but also save the opts_set flags. > It could be done e.g. by adding a bool array or set of bool members > to struct cl_optimization and struct cl_target_option , or even more compact > by using bitmasks, pack each 64 adjacent option flags into a UHWI element > of an array. So, I've tried under debugger how it behaves and seems global_options_set is really an or of whether an option has been ever seen as explicit, either on the command line or in any of the option pragmas or optimize/target attributes seen so far, so it isn't something that can be relied on. The following patch implements the saving/restoring of the opts_set bits (though only for the options/variables saved by the generic options-save.c code, for the target specific stuff that isn't handled by the generic code the opts_set argument is now passed to the hook and the backends can choose e.g. to use a TargetSave variable to save the flags either individually or together in some bitmask (or ignore it if they never need opts_set for the options). This patch itself doesn't fix the testcase failing on arm, but a follow up patch will. 2020-09-14 Jakub Jelinek <jakub@redhat.com> gcc/ * opt-read.awk: Also initialize extra_target_var_types array. * opth-gen.awk: Emit explicit_mask arrays to struct cl_optimization and cl_target_option. Adjust cl_optimization_save, cl_optimization_restore, cl_target_option_save and cl_target_option_restore declarations. * optc-save-gen.awk: Add opts_set argument to cl_optimization_save, cl_optimization_restore, cl_target_option_save and cl_target_option_restore functions and save or restore opts_set next to the opts values into or from explicit_mask arrays. In cl_target_option_eq and cl_optimization_option_eq compare explicit_mask arrays, in cl_target_option_hash and cl_optimization_hash hash them and in cl_target_option_stream_out, cl_target_option_stream_in, cl_optimization_stream_out and cl_optimization_stream_in stream them. * tree.h (build_optimization_node, build_target_option_node): Add opts_set argument. * tree.c (build_optimization_node): Add opts_set argument, pass it to cl_optimization_save. (build_target_option_node): Add opts_set argument, pass it to cl_target_option_save. * function.c (invoke_set_current_function_hook): Adjust cl_optimization_restore caller. * ipa-inline-transform.c (inline_call): Adjust cl_optimization_restore and build_optimization_node callers. * target.def (TARGET_OPTION_SAVE, TARGET_OPTION_RESTORE): Add opts_set argument. * target-globals.c (save_target_globals_default_opts): Adjust cl_optimization_restore callers. * toplev.c (process_options): Adjust build_optimization_node and cl_optimization_restore callers. (target_reinit): Adjust cl_optimization_restore caller. * tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers): Adjust build_optimization_node and cl_optimization_restore callers. * doc/tm.texi: Updated. * config/aarch64/aarch64.c (aarch64_override_options): Adjust build_target_option_node caller. (aarch64_option_save, aarch64_option_restore): Add opts_set argument. (aarch64_set_current_function): Adjust cl_target_option_restore caller. (aarch64_option_valid_attribute_p): Adjust cl_target_option_save, cl_target_option_restore, cl_optimization_restore, build_optimization_node and build_target_option_node callers. * config/aarch64/aarch64-c.c (aarch64_pragma_target_parse): Adjust cl_target_option_restore and build_target_option_node callers. * config/arm/arm.c (arm_option_save, arm_option_restore): Add opts_set argument. (arm_option_override): Adjust cl_target_option_save, build_optimization_node and build_target_option_node callers. (arm_set_current_function): Adjust cl_target_option_restore caller. (arm_valid_target_attribute_tree): Adjust build_target_option_node caller. (add_attribute): Formatting fix. (arm_valid_target_attribute_p): Adjust cl_optimization_restore, cl_target_option_restore, arm_valid_target_attribute_tree and build_optimization_node callers. * config/arm/arm-c.c (arm_pragma_target_parse): Adjust cl_target_option_restore callers. * config/csky/csky.c (csky_option_override): Adjust build_target_option_node and cl_target_option_save callers. * config/gcn/gcn.c (gcn_fixup_accel_lto_options): Adjust build_optimization_node and cl_optimization_restore callers. * config/i386/i386-builtins.c (get_builtin_code_for_version): Adjust cl_target_option_save and cl_target_option_restore callers. * config/i386/i386-c.c (ix86_pragma_target_parse): Adjust build_target_option_node and cl_target_option_restore callers. * config/i386/i386-options.c (ix86_function_specific_save, ix86_function_specific_restore): Add opts_set arguments. (ix86_valid_target_attribute_tree): Adjust build_target_option_node caller. (ix86_valid_target_attribute_p): Adjust build_optimization_node, cl_optimization_restore, cl_target_option_restore, ix86_valid_target_attribute_tree and build_optimization_node callers. (ix86_option_override_internal): Adjust build_target_option_node caller. (ix86_reset_previous_fndecl, ix86_set_current_function): Adjust cl_target_option_restore callers. * config/i386/i386-options.h (ix86_function_specific_save, ix86_function_specific_restore): Add opts_set argument. * config/nios2/nios2.c (nios2_option_override): Adjust build_target_option_node caller. (nios2_option_save, nios2_option_restore): Add opts_set argument. (nios2_valid_target_attribute_tree): Adjust build_target_option_node caller. (nios2_valid_target_attribute_p): Adjust build_optimization_node, cl_optimization_restore, cl_target_option_save and cl_target_option_restore callers. (nios2_set_current_function, nios2_pragma_target_parse): Adjust cl_target_option_restore callers. * config/pru/pru.c (pru_option_override): Adjust build_target_option_node caller. (pru_set_current_function): Adjust cl_target_option_restore callers. * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust cl_target_option_save caller. (rs6000_option_override_internal): Adjust build_target_option_node caller. (rs6000_valid_attribute_p): Adjust build_optimization_node, cl_optimization_restore, cl_target_option_save, cl_target_option_restore and build_target_option_node callers. (rs6000_pragma_target_parse): Adjust cl_target_option_restore and build_target_option_node callers. (rs6000_activate_target_options): Adjust cl_target_option_restore callers. (rs6000_function_specific_save, rs6000_function_specific_restore): Add opts_set argument. * config/s390/s390.c (s390_function_specific_restore): Likewise. (s390_option_override_internal): Adjust s390_function_specific_restore caller. (s390_option_override, s390_valid_target_attribute_tree): Adjust build_target_option_node caller. (s390_valid_target_attribute_p): Adjust build_optimization_node, cl_optimization_restore and cl_target_option_restore callers. (s390_activate_target_options): Adjust cl_target_option_restore caller. * config/s390/s390-c.c (s390_cpu_cpp_builtins): Adjust cl_target_option_save caller. (s390_pragma_target_parse): Adjust build_target_option_node and cl_target_option_restore callers. gcc/c-family/ * c-attribs.c (handle_optimize_attribute): Adjust cl_optimization_save, cl_optimization_restore and build_optimization_node callers. * c-pragma.c (handle_pragma_optimize): Adjust build_optimization_node caller. (handle_pragma_push_options): Adjust build_optimization_node and build_target_option_node callers. (handle_pragma_pop_options, handle_pragma_reset_options): Adjust cl_optimization_restore callers. gcc/go/ * go-gcc.cc (Gcc_backend::function): Adjust cl_optimization_save, cl_optimization_restore and build_optimization_node callers. gcc/ada/ * gcc-interface/trans.c (gigi): Adjust build_optimization_node caller.
2020-08-27gotest: use a space rather than a middle dot in target listsMaciej W. Rozycki1-1/+1
Replace the U+00B7 middle dot character, placed after "mips64p32le" in the target lists, with a space. The U+00B7 character may not be considered whitespace by Bourne shell and any non-ASCII character may render incorrectly in some terminal devices. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/251177
2020-08-26cmd: add -maix32 to gcc calls for aix/ppcClément Chigot1-1/+1
As gcc might now be compiled in 64bit, -maix32 must always be added to ensure that created objects will be 32bit. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/250778
2020-08-26libgo: add FAT library support for static libraries on AIXClément Chigot1-1/+1
Like shared libraries, AIX static libraries must also have both 32 and 64 bit objects. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/250777
2020-08-17compiler: export thunks referenced by inline functionsIan Lance Taylor3-9/+10
The test case is https://golang.org/cl/248637. Fixes golang/go#40252 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/248638
2020-08-12libgo: correctly handle AIX FAT library creationClément Chigot1-1/+1
The previous patch wasn't working everytime. Especially when AR had "-X32_64", the new .so would replace the default one and not just being added. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/247377
2020-08-11internal/syscall/unix: restore ppc build tagIan Lance Taylor1-1/+1
It was accidentally lost in the 1.15rc1 merge. Fixes PR go/96567 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/247843
2020-08-11Daily bump.GCC Administrator1-0/+5
2020-08-10runtime: revert eqtype for AIXClément Chigot9-10/+43
AIX linker is not able to merge identical type descriptors in a single symbol if there are coming from different object or shared object files. This results into several pointers referencing the same type descriptors. Thus, eqtype is needed to ensure that these different symbols will be considered as the same type descriptor. Fixes golang/go#39276 gcc/go/ChangeLog: * go-c.h (struct go_create_gogo_args): Add need_eqtype field. * go-lang.c (go_langhook_init): Set need_eqtype. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/235697
2020-08-07libgo: update to Go1.15rc2 releaseIan Lance Taylor1-1/+1
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/247517
2020-08-04compiler: delete lowered constant stringsIan Lance Taylor2-2/+9
If we lower a constant string operation in a Binary_expression, delete the strings. This is safe because constant strings are always newly allocated. This is a hack to use much less memory when compiling the new time/tzdata package, which has a file that contains the sum of over 13,000 constant strings. We don't do this for numeric expressions because that could cause us to delete an Iota_expression. We should have a cleaner approach to memory usage some day. Fixes PR go/96450
2020-08-03internal/syscall/unix: correct ia64 syscall numbersIan Lance Taylor1-1/+1
Per Andreas Schwab. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/246264
2020-08-03internal/syscall/unix: define copyFileRangeTrap for all architecturesIan Lance Taylor1-1/+1
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/246363
2020-08-01libgo: update to go1.15rc1Ian Lance Taylor1-1/+1
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/245157
2020-07-27compiler,runtime: pass only ptr and len to some runtime callsIan Lance Taylor3-35/+40
This ports https://golang.org/cl/227163 to the Go frontend. This is a step toward moving up to the go1.15rc1 release. Original CL description: cmd/compile,runtime: pass only ptr and len to some runtime calls Some runtime calls accept a slice, but only use ptr and len. This change modifies most such routines to accept only ptr and len. After this change, the only runtime calls that accept an unnecessary cap arg are concatstrings and slicerunetostring. Neither is particularly common, and both are complicated to modify. Negligible compiler performance impact. Shrinks binaries a little. There are only a few regressions; the one I investigated was due to register allocation fluctuation. Passes 'go test -race std cmd', modulo golang/go#38265 and golang/go#38266. Wow, does that take a long time to run. file before after Δ % compile 19655024 19655152 +128 +0.001% cover 5244840 5236648 -8192 -0.156% dist 3662376 3658280 -4096 -0.112% link 6680056 6675960 -4096 -0.061% pprof 14789844 14777556 -12288 -0.083% test2json 2824744 2820648 -4096 -0.145% trace 11647876 11639684 -8192 -0.070% vet 8260472 8256376 -4096 -0.050% total 115163736 115118808 -44928 -0.039% For golang/go#36890 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/245099
2020-07-27compiler: for package-scope "a = b; b = x" just set "a = x"Ian Lance Taylor2-8/+31
This avoids requiring an init function to initialize the variable. This can only be done if x is a static initializer. The go1.15rc1 runtime package relies on this optimization. The package has a variable "var maxSearchAddr = maxOffAddr". The maxSearchAddr variable is used by code that runs before package initialization is complete. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/245098
2020-07-27compiler: scan all function literals for escape analysisIan Lance Taylor2-12/+19
We were scanning only function literals with closures, but not all function literals have closures. Discovered because compiler failed building 1.15rc1, as there is a function literal in the runtime package (p1 in hexdumpWords) that has no closure and, without escape analysis, was forcing a variable to the heap which is not permitted in the runtime. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/244802
2020-07-23libgo: add AIX FAT libraries supportClément Chigot1-1/+1
AIX-style libraries contains both 32 and 64 bit shared objects. This patch follows the adding of FAT libraries support in other gcc libraries (libgcc, listdc++, etc). Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/242957
2020-07-17libgo: update to Go 1.14.6 releaseIan Lance Taylor1-1/+1
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/243317
2020-07-11compiler: avoid generating unnamed bool type descriptorIan Lance Taylor4-7/+15
We were generating it in cases where a boolean expression was converted directly to an empty interface type. Fixes golang/go#40152 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/242002
2020-07-11compiler: handle aliases to pointer types with interfacesIan Lance Taylor2-6/+13
Test case is https://golang.org/cl/241997. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/241998
2020-07-10libgo: update to Go 1.14.4 releaseIan Lance Taylor1-1/+1
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/241999
2020-06-29compiler: remove some erroneous code that was never runIan Lance Taylor2-10/+6
The code accidentally called Type::type_descriptor rather than the do_type_descriptor method. Calling Type::type_descriptor with a second argument of NULL would always crash. Since that never happened, it revealed that this code was never actually executed. Fixes PR go/95970 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/240477
2020-06-15libgo: update x/sys/cpu to add all GOARCHes supported by gccgoTobias Klauser1-1/+1
CL 237897 added additional GOARCHes supported by gccgo to x/sys/cpu. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/238038
2020-06-15internal/syscall/unix: use getrandom_linux_generic.go on riscvTobias Klauser1-1/+1
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/237899
2020-06-12runtime: fix arenaBaseOffset for aix/ppcClément Chigot1-1/+1
The arenaBaseOffset modifications was aimed only for aix/ppc64. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/237038
2020-05-25libgo: update x/sys/cpu after gccgo support addedClément Chigot1-1/+1
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/234597
2020-05-15libgo: only build syscall test with -static if it worksIan Lance Taylor1-1/+1
Test whether -static works, and use it if possible. This time for sure. For PR go/95061 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/234024
2020-05-14libgo: only build syscall test with -static on GNU/LinuxIan Lance Taylor1-1/+1
For PR go/95061 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/234019
2020-05-13libgo: build syscall test with -staticIan Lance Taylor1-1/+1
This avoids problems finding libgo.so when running the test as root, which invokes the test as a child process in various limited environments. Fixes PR go/95061 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/233897
2020-05-11runtime: fix TestCallersNilPointerPaniceric fang1-1/+1
The expected result of TestCallersNilPointerPanic has changed in GoLLVM. This CL makes some elements of the expected result optional so that this test passes in both gccgo and GoLLVM. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/230138
2020-05-11syscall: append to environment in tests, don't clobber itIan Lance Taylor1-1/+1
This is a partial backport of https://golang.org/cl/233318. It's only a partial backport because part of the change was already applied to libgo in CL 193497 as part of the update to the Go 1.13beta1 release. Fixes PR go/95061 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/233359
2020-05-11compiler: use const std::string& in a couple of placesIan Lance Taylor3-4/+4
Use a reference to avoid copying a std::string. Fixes go/94766 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/233320
2020-04-23gotest: increase the test timeouteric fang1-1/+1
The default test timeout duration of the gc compiler is 10 minutes, and the current default timeout duration of gofrontend is 240 seconds, which is not long enough for some big tests. This CL changes it to 600s, so that all tests have enough time to complete. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/229657
2020-04-20gccgo: fix runtime compilation on NetBSDBenny Siegert1-1/+1
si_code in siginfo_t is a macro on NetBSD, not a member of the struct itself, so add a C trampoline for receiving its value. Also replace references to mos.waitsemacount with the replacement and add some helpers from os_netbsd.go in the GC repository. Update golang/go#38538. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/228918
2020-04-15runtime: use 64 bits of hash seed on arm64eric fang1-1/+1
This is the same issue as #33960, but on gofrontend. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/220297
2020-04-15Go Gcc_backend class: mark prefetch as novopsIan Lance Taylor2-88/+100
PR go/94607 * go-gcc.cc (class Gcc_backend): Define builtin_const, builtin_noreturn, builtin_novops. (Gcc_backend::define_builtin): Change const_p and noreturn_p parameters to a single flags parameter. Change all callers. (Gcc_backend::Gcc_backend): Pass novops for prefetch.
2020-04-09libgo: update to final 1.14.2 releaseIan Lance Taylor1-1/+1
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/227551
2020-04-09compiler: look up composite literal keys in the global namespaceIan Lance Taylor2-4/+12
A composite literal key may not have a global definition, so Gogo::define_global_names may not see it. In order to correctly handle the case in which a predeclared identifier is used as a composite literal key, do an explicit check of the global namespace. Test case is https://golang.org/cl/227783. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/227784
2020-04-06libgo: update to almost the 1.14.2 releaseIan Lance Taylor1-1/+1
Update to edea4a79e8d7dea2456b688f492c8af33d381dc2 which is likely to be approximately the 1.14.2 release. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/227377
2020-02-28runtime: handle linux/arm64 signal registereric fang1-1/+1
Set sigpc and implement dumpregs for linux/arm64. Without this change, cmd/vet tool test will fail randomly. Updates golang/go#20931 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/220543
2020-02-26libgo: update to final Go1.14 releaseIan Lance Taylor1-1/+1
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/221158
2020-02-24internal/poll: add hurd build tagIan Lance Taylor1-1/+1
Patch from Svante Signell. Fixes GCC PR go/93900 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/220592