aboutsummaryrefslogtreecommitdiff
path: root/gcc/go
AgeCommit message (Collapse)AuthorFilesLines
2019-01-01Update copyright years.Jakub Jelinek14-14/+16
From-SVN: r267494
2019-01-01gcc.c (process_command): Update copyright notice dates.Jakub Jelinek2-1/+5
* gcc.c (process_command): Update copyright notice dates. * gcov-dump.c (print_version): Ditto. * gcov.c (print_version): Ditto. * gcov-tool.c (print_version): Ditto. * gengtype.c (create_file): Ditto. * doc/cpp.texi: Bump @copying's copyright year. * doc/cppinternals.texi: Ditto. * doc/gcc.texi: Ditto. * doc/gccint.texi: Ditto. * doc/gcov.texi: Ditto. * doc/install.texi: Ditto. * doc/invoke.texi: Ditto. gcc/fortran/ * gfortranspec.c (lang_specific_driver): Update copyright notice dates. * gfc-internals.texi: Bump @copying's copyright year. * gfortran.texi: Ditto. * intrinsic.texi: Ditto. * invoke.texi: Ditto. gcc/go/ * gccgo.texi: Bump @copyrights-go year. gcc/ada/ * gnat_ugn.texi: Bump @copying's copyright year. * gnat_rm.texi: Likewise. gcc/d/ * gdc.texi: Bump @copyrights-d year. libitm/ * libitm.texi: Bump @copying's copyright year. libgomp/ * libgomp.texi: Bump @copying's copyright year. libquadmath/ * libquadmath.texi: Bump @copying's copyright year. From-SVN: r267492
2018-12-29runtime: prevent deadlock when profiling signal arrives in stack scanIan Lance Taylor1-1/+1
Precise stack scan needs to unwind the stack. When it is unwinding the stack, if a profiling signal arrives, which also does a traceback, it may deadlock in dl_iterate_phdr. Prevent this deadlock by setting up runtime_in_callers before traceback. Reviewed-on: https://go-review.googlesource.com/c/155766 From-SVN: r267457
2018-12-28compiler: remove escapes_ field from Variable and Result_variableIan Lance Taylor4-56/+10
The fields were set to true initially and never set to false. These were left over from an earlier attempt at escape analysis. Reviewed-on: https://go-review.googlesource.com/c/155750 From-SVN: r267455
2018-12-27runtime: delete export_arm_test.goIan Lance Taylor1-1/+1
The only thing export_arm_test.go does is to export usplit, which does not exist in gccgo. Reviewed-on: https://go-review.googlesource.com/c/155760 From-SVN: r267435
2018-12-27runtime: let ARM32 EABI personality function continue unwind when called ↵Ian Lance Taylor1-1/+1
from traceback On ARM32 EABI, unlike other platforms, the personality function is called during _Unwind_Backtrace (libgcc/unwind-arm-common.inc:581). In this case, simply unwind the frame without returning any handlers. Otherwise traceback will loop if there is a frame with a defer on stack. Reviewed-on: https://go-review.googlesource.com/c/155759 From-SVN: r267434
2018-12-27runtime: on ARM32 EABI, don't get LSDA if compact model is usedIan Lance Taylor1-1/+1
On ARM32 EABI, when the "compact" unwinding model is used, it does not have standard LSDA and _Unwind_GetLanguageSpecificData will not return data that is parseable by us. Check this conditon before calling _Unwind_GetLanguageSpecificData. Fix ARM32 build. Reviewed-on: https://go-review.googlesource.com/c/155758 From-SVN: r267428
2018-12-12runtime: handle DW_EH_PE_absptr in type table encodingIan Lance Taylor1-1/+1
The type table encoding can be DW_EH_PE_absptr, but this case was missing, which was causing abort on ARM32 EABI. Add the missing case. Reviewed-on: https://go-review.googlesource.com/c/153857 From-SVN: r267070
2018-12-12os/signal: increase deliver time for signal testcaseIan Lance Taylor1-1/+1
This increases the time to wait for signals to be delivered in the TestAtomicStop testcase. When running gccgo tests on ppc64 or ppc64le, there are intermittent failures in this test because the wait time is too small. Updates golang/go#29046 Reviewed-on: https://go-review.googlesource.com/c/153879 From-SVN: r267068
2018-12-11runtime: use _URC_FAILURE on ARM32Ian Lance Taylor1-1/+1
ARM32 EABI unwinder does not define _URC_NORMAL_STOP. Instead, it has _URC_FAILURE. Use _URC_FAILURE there. Should fix ARM32 build. Reviewed-on: https://go-review.googlesource.com/c/153417 From-SVN: r267033
2018-12-07runtime: add missing return for non-GNU/Linux version of tgkillIan Lance Taylor1-1/+1
Path from Rainer Orth. Reviewed-on: https://go-review.googlesource.com/c/153118 From-SVN: r266890
2018-12-05runtime: add precise stack scan supportIan Lance Taylor1-1/+1
This CL adds support of precise stack scan using stack maps to the runtime. The stack maps are generated by the compiler (if supported). Each safepoint is associated with a (real or dummy) landing pad, and its "type info" in the exception table is a pointer to the stack map. When a stack is scanned, the stack map is found by the stack unwinding code by inspecting the exception table (LSDA). For precise stack scan we need to unwind the stack. There are three cases: - If a goroutine is scanning its own stack, it can unwind the stack and scan the frames. - If a goroutine is scanning another, stopped, goroutine, it cannot directly unwind the target stack. We handle this by switching (runtime.gogo) to the target g, letting it unwind and scan the stack, and switch back. - If we are scanning a goroutine that is blocked in a syscall, we send a signal to the target goroutine's thread, and let the signal handler unwind and scan the stack. Extra care is needed as this races with enter/exit syscall. Currently this is only implemented on linux. Reviewed-on: https://go-review.googlesource.com/c/140518 From-SVN: r266832
2018-12-05syscall: remove Flock for aix/ppc64Ian Lance Taylor1-1/+1
CL 152397 removed it from gc's syscall package. Updates golang/go#29084 Reviewed-on: https://go-review.googlesource.com/c/152557 From-SVN: r266812
2018-12-04cmd/vet: use default compiler when determining type sizesIan Lance Taylor1-1/+1
Fixes a segfault running vet on alpha. Patch by Uros Bizjak. Reviewed-on: https://go-review.googlesource.com/c/152437 From-SVN: r266781
2018-12-03cmd/go: allow buildmode c-archive for gccgo on ppc64Ian Lance Taylor1-1/+1
In buildmodeinit, the c-archive buildmode is flagged as invalid on linux/ppc64 for gccgo when it should be valid. This happens because the check against the gccgo flag is done after the checks for valid GOOS/GOARCH pairs instead of before as is done for all other buildmode cases in this switch. This corrects the problem and allows several of the gccgo gotools testcases to pass on linux/ppc64. Updates #29046 Reviewed-on: https://go-review.googlesource.com/c/152137 From-SVN: r266764
2018-11-28compiler: inline functions with assignments and return statementsIan Lance Taylor5-7/+193
Support inlining functions that contain only assignments and return statements, with expressions of either constants or parameters. Functions that contain other kinds of statements or expressions are not yet inlined. With this change, about 100 functions in the standard library are inlinable. Reviewed-on: https://go-review.googlesource.com/c/150073 From-SVN: r266573
2018-11-27compiler: tweaks for importing inline function bodiesIan Lance Taylor3-4/+24
Track whether we've seen an error when importing a function; we will use error tracking to avoid knock-on errors. Stop importing identifiers at a ')'. Provide a way to adjust the indentation level while importing. Reviewed-on: https://go-review.googlesource.com/c/150072 From-SVN: r266536
2018-11-27compiler: record final type for numeric expressionsIan Lance Taylor5-2/+66
Inlinable function bodies are generated after the determine_types pass, so we know the type for all constants. Rather than try to determine it again when inlining, record the type in the export data, using a $convert expression. Reduce the number of explicit $convert expressions by recording a type context with the expected type in cases where that type is known. Reviewed-on: https://go-review.googlesource.com/c/150071 From-SVN: r266534
2018-11-27compiler: add result parameter names for inlinable functionsIan Lance Taylor3-17/+32
An inlinable function body may need to refer to result parameters, so each result parameter needs a name. We already give them all names in start_function (via create_result_variables). Change the export data so that for an inlinable function we use those names for the function declaration's result parameters. Reviewed-on: https://go-review.googlesource.com/c/150070 From-SVN: r266532
2018-11-27compiler: add types used by inline functions to export dataIan Lance Taylor2-3/+18
Reviewed-on: https://go-review.googlesource.com/c/150069 From-SVN: r266531
2018-11-27compiler: finalize types parsed for inline functionsIan Lance Taylor5-8/+37
When we inline functions, we may parse types that we have not seen before inlining. Inlining runs after the finalize_methods pass, so those types will not be finalized, meaning that we don't have an accurate list of which methods they support. Explicitly finalize them when we parse them. Reviewed-on: https://go-review.googlesource.com/c/150068 From-SVN: r266530
2018-11-27compiler: add '$' to names in expression export dataIan Lance Taylor3-24/+42
For inlined function bodies we're going to need to refer to variables, so change the existing export data to add a '$' to names that look like identifiers: true, false, nil, convert. While we're here drop an unnecessary space character after operators. Reviewed-on: https://go-review.googlesource.com/c/150067 From-SVN: r266529
2018-11-27compiler: change expression importing to use Import_expressionIan Lance Taylor7-69/+296
Change expression importing to use a new abstract interface class Import_expression, so that we can more easily import expressions from inlinable function bodies. This is a refactoring with no affect on compiler behavior. Reviewed-on: https://go-review.googlesource.com/c/150065 From-SVN: r266526
2018-11-27compiler: pass a Location to import_expressionIan Lance Taylor6-52/+57
Separate the Location that import_expression uses when creating a new Expression from the Location used to report an error. This is a step toward importing expressions for inlined functions. This is a pure refactoring that does not affect compiler behavior. Reviewed-on: https://go-review.googlesource.com/c/150064 From-SVN: r266525
2018-11-27compiler: change Expression export to use Export_function_bodyIan Lance Taylor7-111/+157
In preparation for writing expressions to inline function bodies, change the existing expression export code to use Export_function_body rather than Export. Adjust existing expression exporters accordingly. This is a refactoring that doesn't affect compiler output. Reviewed-on: https://go-review.googlesource.com/c/150063 From-SVN: r266523
2018-11-27compiler: import inlinable functions from package dataIan Lance Taylor13-33/+512
Start reading the export data generated by the last change in this series. At this point we will inline direct calls to empty functions and methods defined in different packages. Reviewed-on: https://go-review.googlesource.com/c/150062 From-SVN: r266517
2018-11-26syscall: always define WEXITED and WNOWAIT on GNU/LinuxIan Lance Taylor1-1/+1
Fixes https://gcc.gnu.org/PR88135 Reviewed-on: https://go-review.googlesource.com/c/150897 From-SVN: r266495
2018-11-26compiler: initial support for exporting function bodiesIan Lance Taylor9-10/+397
Create a framework for putting function bodies in export data. At present only empty functions will be put there, and they will be ignored on import. Later patches will get this to the point of supporting inlining of (some) functions defined in other packages. Reviewed-on: https://go-review.googlesource.com/c/150061 From-SVN: r266490
2018-11-21re PR go/88060 ↵Ian Lance Taylor1-1/+1
(../../../gcc-8.2.0/libgo/go/syscall/libcall_linux_utimesnano.go:17:18: error: reference to undefined name ‘_AT_FDCWD’) PR go/88060 syscall: always define _AT_FDCWD and IPv6MTUInfo They aren't defined by old versions of glibc, but are required by the code in syscall_linux.go. Reviewed-on: https://go-review.googlesource.com/c/150697 From-SVN: r266333
2018-11-13Eliminate source_location in favor of location_tDavid Malcolm6-13/+21
Historically GCC used location_t, while libcpp used source_location. This inconsistency has been annoying me for a while, so this patch removes source_location in favor of location_t throughout (as the latter is shorter). gcc/ChangeLog: * builtins.c: Replace "source_location" with "location_t". * diagnostic-show-locus.c: Likewise. * diagnostic.c: Likewise. * dumpfile.c: Likewise. * gcc-rich-location.h: Likewise. * genmatch.c: Likewise. * gimple.h: Likewise. * gimplify.c: Likewise. * input.c: Likewise. * input.h: Likewise. Eliminate the typedef. * omp-expand.c: Likewise. * selftest.h: Likewise. * substring-locations.h (get_source_location_for_substring): Rename to.. (get_location_within_string): ...this. * tree-cfg.c: Replace "source_location" with "location_t". * tree-cfgcleanup.c: Likewise. * tree-diagnostic.c: Likewise. * tree-into-ssa.c: Likewise. * tree-outof-ssa.c: Likewise. * tree-parloops.c: Likewise. * tree-phinodes.c: Likewise. * tree-phinodes.h: Likewise. * tree-ssa-loop-ivopts.c: Likewise. * tree-ssa-loop-manip.c: Likewise. * tree-ssa-phiopt.c: Likewise. * tree-ssa-phiprop.c: Likewise. * tree-ssa-threadupdate.c: Likewise. * tree-ssa.c: Likewise. * tree-ssa.h: Likewise. * tree-vect-loop-manip.c: Likewise. gcc/c-family/ChangeLog: * c-common.c (c_get_substring_location): Update for renaming of get_source_location_for_substring to get_location_within_string. * c-lex.c: Replace "source_location" with "location_t". * c-opts.c: Likewise. * c-ppoutput.c: Likewise. gcc/c/ChangeLog: * c-decl.c: Replace "source_location" with "location_t". * c-tree.h: Likewise. * c-typeck.c: Likewise. * gimple-parser.c: Likewise. gcc/cp/ChangeLog: * call.c: Replace "source_location" with "location_t". * cp-tree.h: Likewise. * cvt.c: Likewise. * name-lookup.c: Likewise. * parser.c: Likewise. * typeck.c: Likewise. gcc/fortran/ChangeLog: * cpp.c: Replace "source_location" with "location_t". * gfortran.h: Likewise. gcc/go/ChangeLog: * go-gcc-diagnostics.cc: Replace "source_location" with "location_t". * go-gcc.cc: Likewise. * go-linemap.cc: Likewise. * go-location.h: Likewise. * gofrontend/README: Likewise. gcc/jit/ChangeLog: * jit-playback.c: Replace "source_location" with "location_t". gcc/testsuite/ChangeLog: * g++.dg/plugin/comment_plugin.c: Replace "source_location" with "location_t". * gcc.dg/plugin/diagnostic_plugin_test_show_locus.c: Likewise. libcc1/ChangeLog: * libcc1plugin.cc: Replace "source_location" with "location_t". (plugin_context::get_source_location): Rename to... (plugin_context::get_location_t): ...this. * libcp1plugin.cc: Likewise. libcpp/ChangeLog: * charset.c: Replace "source_location" with "location_t". * directives-only.c: Likewise. * directives.c: Likewise. * errors.c: Likewise. * expr.c: Likewise. * files.c: Likewise. * include/cpplib.h: Likewise. Rename MAX_SOURCE_LOCATION to MAX_LOCATION_T. * include/line-map.h: Likewise. * init.c: Likewise. * internal.h: Likewise. * lex.c: Likewise. * line-map.c: Likewise. * location-example.txt: Likewise. * macro.c: Likewise. * pch.c: Likewise. * traditional.c: Likewise. From-SVN: r266085
2018-11-09cmd/cgo: fix typo in gccgo name mangling recipeIan Lance Taylor1-1/+1
The code to implement new-style gccgo name mangling had a recipe that didn't quite match the one in the compiler (incorrect handling for '.'). This showed up as a failure in the gotools cgo test if the directory containing the test run included a "." character. Reviewed-on: https://go-review.googlesource.com/c/147917 From-SVN: r265981
2018-11-09syscall: change RLIM_INFINITY from 0xffffffffffffffff to -1Ian Lance Taylor1-1/+1
For compatibility with the gc toolchain's syscall package. Fixes golang/go#28665 Reviewed-on: https://go-review.googlesource.com/c/148697 From-SVN: r265974
2018-11-05compiler: handle abstract type in builtin numeric const valueIan Lance Taylor2-2/+2
Builtin_call_expression::do_numeric_constant_value can be called by Array_type::verify_length before the determine types pass, so accept an abstract type. Test case is https://golang.org/cl/147537. Fixes golang/go#28601 Reviewed-on: https://go-review.googlesource.com/c/147442 From-SVN: r265820
2018-11-01go-gcc.cc (Gcc_backend::write_global_definitions): Don't call ↵Ian Lance Taylor2-1/+8
gimplify_function_tree. * go-gcc.cc (Gcc_backend::write_global_definitions): Don't call gimplify_function_tree. Instead call allocate_struct_function if necessary. From-SVN: r265710
2018-10-31re PR bootstrap/82856 (--enable-maintainter-mode broken by incompatiblity of ↵Ian Lance Taylor1-1/+1
gcc's required automake and modern Perl) PR bootstrap/82856 libgo: update to autoconf 2.69 and automake 1.15.1 Initial patch from Joseph Myers. Reviewed-on: https://go-review.googlesource.com/c/146417 From-SVN: r265701
2018-10-29compiler: pass a single flags argument to Backend::functionIan Lance Taylor5-48/+73
Reviewed-on: https://go-review.googlesource.com/c/145319 * go-gcc.cc (Gcc_backend::function): Change to use a single flags parameter. From-SVN: r265599
2018-10-29compiler: add location_fileIan Lance Taylor4-4/+32
Add support for getting the file name from a Location value. This will be used by later work. Reviewed-on: https://go-review.googlesource.com/c/145318 * go-linemap.cc (Gcc_linemap::location_file): New method. From-SVN: r265598
2018-10-26libgo: simplify gotest script to avoid sed substitution to \nIan Lance Taylor1-1/+1
Reviewed-on: https://go-review.googlesource.com/c/145057 From-SVN: r265541
2018-10-26libgo: avoid use of 'local' directive in shell scriptIan Lance Taylor1-1/+1
Avoid declaring shell variables with 'local' (not supported on all systems of interest). Reviewed-on: https://go-review.googlesource.com/c/145021 From-SVN: r265534
2018-10-26libgo: fix improperly mangled linker symbol directiveIan Lance Taylor1-1/+1
Fix asm name directive for the C version of log/syslog.syslog_c, which didn't get included in the recent name mangling change. Reviewed-on: https://go-review.googlesource.com/c/145017 From-SVN: r265533
2018-10-26libgo: don't use wc in gotestIan Lance Taylor1-1/+1
The wc command is not in the GNU approved list of Makefile utilities (https://www.gnu.org/prep/standards/html_node/Utilities-in-Makefiles.html#Utilities-in-Makefiles). Reviewed-on: https://go-review.googlesource.com/c/144897 From-SVN: r265515
2018-10-25compiler: improve name mangling for packpathsIan Lance Taylor7-76/+153
The current implementation of Gogo::pkgpath_for_symbol was written in a way that allowed two distinct package paths to map to the same symbol, which could cause collisions at link- time or compile-time. Switch to a better mangling scheme to insure that we get a unique packagepath symbol for each package. In the new scheme instead of having separate mangling schemes for identifiers and package paths, the main identifier mangler ("go_encode_id") now handles mangling of both packagepath characters and identifier characters. The new mangling scheme is more intrusive: "foo/bar.Baz" is mangled as "foo..z2fbar.Baz" instead of "foo_bar.Baz". To mitigate this, this patch also adds a demangling capability so that function names returned from runtime.CallersFrames are converted back to their original unmangled form. Changing the pkgpath_for_symbol scheme requires updating a number of //go:linkname directives and C "__asm__" directives to match the new scheme, as well as updating the 'gotest' driver (which makes assumptions about the correct mapping from pkgpath symbol to package name). Fixes golang/go#27534. Reviewed-on: https://go-review.googlesource.com/c/135455 From-SVN: r265510
2018-10-23re PR go/87661 (libgo bootstrap failure on arm-linux-gnueabihf (redefinition ↵Ian Lance Taylor1-1/+1
of constants)) PR go/87661 runtime: remove unused armArch, hwcap and hardDiv After CL 140057 these are only written but never read in gccgo. Reviewed-on: https://go-review.googlesource.com/c/141077 From-SVN: r265439
2018-10-23compiler: export indexed type data, read unexported types lazilyIan Lance Taylor9-152/+555
Introduce a new "types" command to the export data to record the number of types and the size of their export data. It is immediately followed by new "type" commands that can be indexed. Parse all the exported types immediately so that we register them, but parse other type data only as needed. Reviewed-on: https://go-review.googlesource.com/c/143022 From-SVN: r265409
2018-10-19compiler: don't export any functions with special namesIan Lance Taylor2-7/+3
This keeps init functions from appearing in the export data. Checking for special names in general means that we don't need to check specifically for nested functions or thunks, which have special names. Reviewed-on: https://go-review.googlesource.com/c/143237 From-SVN: r265321
2018-10-18compiler: add COMPARE_ALIASES flag for type compare and hashIan Lance Taylor3-10/+25
Normally aliases compare as identical to the underlying type. Add a COMPARE_ALIASES flag to let them compare (and hash) differently. This will be used by later patches in this series. Reviewed-on: https://go-review.googlesource.com/c/143021 From-SVN: r265297
2018-10-18compiler: list indirect imports separately in export dataIan Lance Taylor7-23/+255
Previously when export data referred to a type that was not defined in a directly imported package, we would write the package name as additional information in the type's export data. That approach required all type information to be read in order. This patch changes the compiler to find all references to indirectly imported packages, and write them out as an indirectimport line in the import data. This will permit us to read exported type data out of order. The type traversal used to find indirect imports is a little more complicated than necessary in preparation for later patches in this series. Reviewed-on: https://go-review.googlesource.com/c/143020 From-SVN: r265296
2018-10-18Remove ChangeLog entry for changes in gofrontend that were reverted.Ian Lance Taylor1-15/+0
From-SVN: r265295
2018-10-18Revert SVN revision 264561, incorrectly committed directly to the GCCIan Lance Taylor6-17/+32
repo rather than to the master repo. From-SVN: r265294
2018-10-18compiler: rewrite Type::are_identical to use flagsIan Lance Taylor8-181/+173
A single flags parameter replaces the Cmp_tags and errors_are_identical parameters. The existing behavior is unchanged. This is a simplification step for future work that will add a new flag. Reviewed-on: https://go-review.googlesource.com/c/143019 From-SVN: r265293