aboutsummaryrefslogtreecommitdiff
path: root/gcc/go
AgeCommit message (Collapse)AuthorFilesLines
2023-10-23compiler: move Selector_expression up in fileIan Lance Taylor2-282/+282
This is a mechanical change to move Selector_expression up in expressions.cc. This will make it visible to Builtin_call_expression for later work. This produces a very large "git --diff", but "git diff --minimal" is clear. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/536642
2023-10-23compiler: make xx_constant_value methods non-constIan Lance Taylor3-67/+37
This changes the Expression {numeric,string,boolean}_constant_value methods non-const. This does not affect anything immediately, but will be useful for later CLs in this series. The only real effect is to Builtin_call_expression::do_export, which remains const and can no longer call numeric_constant_value. But it never needed to call it, as do_export runs after do_lower, and do_lower replaces a constant expression with the actual constant. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/536641
2023-10-23compiler: pass gogo to Runtime::make_callIan Lance Taylor9-170/+217
This is a boilerplate change to pass gogo to Runtime::make_call. It's not currently used but will be used by later CLs in this series. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/536640
2023-10-23compiler: add Expression::is_untyped methodIan Lance Taylor3-1/+277
This method is not currently used by anything, but it will be used by later CLs in this series. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/536639
2023-10-23syscall: add missing type conversionIan Lance Taylor1-1/+1
The gofrontend incorrectly accepted code that was missing a type conversion. The test case for this is bug518.go in https://go.dev/cl/536537. Future CLs in this series will detect the type error. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/536638
2023-10-22compiler: remove traverse_assignments passIan Lance Taylor3-165/+1
The last caller was removed in https://go.dev/cl/18261 in 2016. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/536637
2023-10-22compiler: remove name_ field from Type_switch_statementIan Lance Taylor4-15/+8
It's not used for anything. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/536636
2023-10-22compiler: pass Gogo to determine types passIan Lance Taylor10-264/+280
Also pass Gogo to the type verification pass. This is a refactoring that does not change the compiler behavior. This is in preparation for future CLs that rearrange the pass ordering. This introduces one new call to go_get_gogo, which will be removed in a future CL. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/536635
2023-09-12libgo: fix DejaGNU testsuite compiler when using build sysrootIan Lance Taylor1-1/+1
Patch from Thomas Schwinge. PR testsuite/109951 * configure.ac: 'AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)'. * Makefile.in: Regenerate. * configure: Likewise. * testsuite/Makefile.in: Likewise. * testsuite/lib/libgo.exp (libgo_init): If '--with-build-sysroot=[...]' was specified, use it for build-tree testing. * testsuite/libgo-test-support.exp.in (GOC_UNDER_TEST): Don't set. (SYSROOT_CFLAGS_FOR_TARGET): Set. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/527755
2023-09-06cmd/go: permit $AR to include optionsIan Lance Taylor1-1/+1
Handle the AR environment variable, used by gccgo, the same way we handle the CC environment variable. This ports https://go.dev/cl/526275 to the gofrontend repo. This is needed for gccgo testing because the top-level GCC Makefile now passes a --plugin option to ar if it supports one. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/526295
2023-07-20cmd/go: don't collect package CGOLDFLAGS when using gccgoIan Lance Taylor1-1/+1
They are already collected via cmd/cgo. The gccgo_link_c test is tweaked to do real linking as with this change the cgo ldflags are not fully reflected in go build -n output, since they now only come from the built archive. This is a backport of https://go.dev/cl/497117 from the main repo. For golang/go#60287 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/511675
2023-07-06Daily bump.GCC Administrator1-0/+5
2023-07-05Change MODE_BITSIZE to MODE_PRECISION for MODE_VECTOR_BOOL.Robin Dapp1-1/+1
RISC-V lowers the TYPE_PRECISION for MODE_VECTOR_BOOL vectors in order to distinguish between VNx1BI, VNx2BI, VNx4BI and VNx8BI. This patch adjusts uses of MODE_VECTOR_BOOL to use GET_MODE_PRECISION instead of GET_MODE_BITSIZE. The RISC-V tests are provided by Juzhe. Co-Authored-By: Juzhe-Zhong <juzhe.zhong@rivai.ai> gcc/c-family/ChangeLog: * c-common.cc (c_common_type_for_mode): Use GET_MODE_PRECISION. gcc/ChangeLog: * simplify-rtx.cc (native_encode_rtx): Ditto. (native_decode_vector_rtx): Ditto. (simplify_const_vector_byte_offset): Ditto. (simplify_const_vector_subreg): Ditto. * tree.cc (build_truth_vector_type_for_mode): Ditto. * varasm.cc (output_constant_pool_2): Ditto. gcc/fortran/ChangeLog: * trans-types.cc (gfc_type_for_mode): Ditto. gcc/go/ChangeLog: * go-lang.cc (go_langhook_type_for_mode): Ditto. gcc/lto/ChangeLog: * lto-lang.cc (lto_type_for_mode): Ditto. gcc/rust/ChangeLog: * backend/rust-tree.cc (c_common_type_for_mode): Ditto. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-1.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-10.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-11.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-12.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-13.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-14.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-2.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-3.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-4.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-5.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-6.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-7.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-8.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-9.c: New test.
2023-06-27Daily bump.GCC Administrator1-0/+9
2023-06-26compiler: support -fgo-importcfgIan Lance Taylor10-7/+182
* lang.opt (fgo-importcfg): New option. * go-c.h (struct go_create_gogo_args): Add importcfg field. * go-lang.cc (go_importcfg): New static variable. (go_langhook_init): Set args.importcfg. (go_langhook_handle_option): Handle -fgo-importcfg. * gccgo.texi (Invoking gccgo): Document -fgo-importcfg. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/506095
2023-06-23compiler, libgo: support bootstrapping gc compilerIan Lance Taylor3-3/+33
In the Go 1.21 release the package internal/profile imports internal/lazyregexp. That works when bootstrapping with Go 1.17, because that compiler has internal/lazyregep and permits importing it. We also have internal/lazyregexp in libgo, but since it is not installed it is not available for importing. This CL adds internal/lazyregexp to the list of internal packages that are installed for bootstrapping. The Go 1.21, and earlier, releases have a couple of functions in the internal/abi package that are always fully intrinsified. The gofrontend recognizes and intrinsifies those functions as well. However, the gofrontend was also building function descriptors for references to the functions without calling them, which failed because there was nothing to refer to. That is OK for the gc compiler, which guarantees that the functions are only called, not referenced. This CL arranges to not generate function descriptors for these functions. For golang/go#60913 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/504798
2023-06-23Daily bump.GCC Administrator1-0/+5
2023-06-22go: Update usage of TARGET_AIX to TARGET_AIX_OSPaul E. Murphy2-7/+7
TARGET_AIX is defined to a non-zero value on linux and maybe other powerpc64le targets. This leads to unexpected behavior such as dropping the .go_export section when linking a shared library on linux/powerpc64le. Instead, use TARGET_AIX_OS to toggle AIX specific behavior. Fixes golang/go#60798. 2023-06-22 Paul E. Murphy <murphyp@linux.ibm.com> gcc/go/ * go-backend.cc [TARGET_AIX]: Rename and update usage to TARGET_AIX_OS. * go-lang.cc: Likewise.
2023-06-21compiler: determine types of Slice_{value,info} expressionsIan Lance Taylor3-4/+13
This fixes an accidental omission in the determine types pass. Test case is https://go.dev/cl/505015. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/504797
2023-06-20runtime: use a C function to call mmapIan Lance Taylor1-1/+1
The final argument to mmap, of type off_t, varies. In CL 445375 we changed it to always use the C off_t type, but that broke 32-bit big-endian Linux systems. On those systems, using the C off_t type requires calling the mmap64 function. In C this is automatically handled by the <sys/mman.h> file. In Go, we would have to change the magic //extern comment to call mmap64 when appropriate. Rather than try to get that right, we instead go through a C function that uses C implicit type conversions to pick the right type. Fixes PR go/110297 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/504415
2023-06-16libgo/testsuite: add benchmarks and examples to listIan Lance Taylor1-1/+1
In CL 384695 I simplified the code that built lists of benchmarks, examples, and fuzz tests, and managed to break it. This CL corrects the code to once again make the benchmarks available, and to run the examples with output and the fuzz targets. Doing this revealed a test failure in internal/fuzz on 32-bit x86: a signalling NaN is turned into a quiet NaN on the 387 floating-point stack that GCC uses by default. This CL skips the test. Fixes golang/go#60826 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/503798
2023-05-11syscall: add prlimitIan Lance Taylor1-1/+1
As of https://go.dev/cl/476695 golang.org/x/sys/unix can call syscall.prlimit, so we need such a function in libgo. For golang/go#46279 Fixes golang/go#59712 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/486576
2023-04-07mime: remove test ordering dependencyIan Lance Taylor1-1/+1
Backport CL 421442 from upstream. Original description: Arrange for tests that call setMimeInit to fully restore the old values, by clearing the sync.Once that controls initialization. Once we've done that, call initMime in initMimeUnixTest because otherwise the test types loaded there will be cleared by the call to initMime that previously was not being done. For golang/go#51648 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/483117
2023-03-28compiler: mark Call_expression multiple results as a result structIan Lance Taylor2-1/+2
In https://go.dev/cl/343873 we stopped padding zero-sized trailing fields in functions that return multiple results where the last result is zero-sized. This CL makes the corresponding change on the caller side. The test case is https://go.dev/cl/479898. Fixes golang/go#55242 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/479955
2023-03-25Daily bump.GCC Administrator1-0/+10
2023-03-24go: Fix up go.test/test/fixedbugs/bug207.go failure [PR109258]Jakub Jelinek1-1/+11
The PR109086 r13-6690 inline_string_cmp change to if (diff != result) emit_move_insn (result, diff); regressed FAIL: go.test/test/fixedbugs/bug207.go, -O2 -g (internal compiler error: in emit_move_insn, at expr.cc:4224) The problem is the Go FE doesn't mark __builtin_memcmp as pure as other FEs, so we ended up with __builtin_memcmp (whatever, whateverelse, somesize); in the IL before expansion and the expansion ICEd on it. As the builtin calls a library function which is pure or is inline expanded as such, not marking it pure is an unnecessary pessimization from the FE side, keeping such dead calls in the IL if they aren't needed will not help anything. The following patch fixes that. Initially I've added just DECL_PURE_P to it, but that unfortunately broke bootstrap, for __builtin_memcmp there is also __builtin_memcmp_eq registered by the middle-end code if not registered earlier and that one is registered with the usual flags (pure, nothrow, leaf), so if __builtin_memcmp from FE was just pure, it would appear in the IL as that it can raise exceptions and when folded into __builtin_memcmp_eq all of sudden it couldn't and we'd ICE in verification. I think tons of functions should have builtin_nothrow as well, but changing that wasn't necessary for this fix. 2023-03-24 Jakub Jelinek <jakub@redhat.com> PR middle-end/109258 * go-gcc.cc (Gcc_backend): Add new static data members builtin_pure and builtin_nothrow. (Gcc_backend::Gcc_backend): Pass builtin_pure | builtin_nothrow for BUILT_IN_MEMCMP. (Gcc_backend::define_builtin): Handle builtin_pure and builtin_nothrow in flags.
2023-03-22compiler: add missing Slice_info_expression::do_traverseIan Lance Taylor2-1/+5
Fixes golang/go#59169 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/478176
2023-02-24Daily bump.GCC Administrator1-0/+4
2023-02-23**/*.texi: Reorder index entriesArsen Arsenović1-17/+17
This change is a generalization of r13-6292-gddf6fe375d9110. Historically, makeinfo exhibited a bug, due to which a structure like: @item foo @cindex foo @cindex bar ... would be transformed into an item heading, with the first index entry on it, followed by an item body, with the second index entry in it. This has often lead to index entries not linking to relevant items, but rather, just below them. This bug was exhibited in both Info and HTML documentation, and was most glaringly obvious in the latter. After a discussion with the Texinfo developers, it was decided that the appropriate construct for this case is: @cindex foo @cindex bar @item foo ... which behaves correctly in newer versions, linking all the index entries to the item itself. This pattern also produces copiable anchors in HTML output. This commit fixes most indices to follow the pattern above, however, omits relevant changes in the Ada manuals, as the algorithm described below lead to many false positives and unwanted changes in that manual. Much like the previous commit, this change is mostly mechanical, with a simple script. I have, however, gone over the patch myself also, to see if there's anything that ought to be kept as-is. Formatter: # GPL3+ use v5.35; use strict; use warnings; my @lineq = (); my @itemq = (); my @indxq = (); my $lstin = 0; while (<>) { push (@lineq, $_); if (/^\@[a-zA-Z0-9]{1,2}index\W/) { $lstin = @lineq; push (@indxq, $_); next; } if (/^\@itemx?\W/) { $lstin = @lineq; push (@itemq, $_); next; } next if $lstin && /^\s*(\@c(omment)?\W.*)?$/; if (@indxq and @itemq) { print @indxq; print @itemq; print @lineq[$lstin..@lineq-1]; } else { print @lineq; } @lineq = (); @itemq = (); @indxq = (); $lstin = 0; } if (@indxq and @itemq) { print @indxq; print @itemq; print @lineq[$lstin..@lineq-1]; } else { print @lineq; } # Local Variables: # indent-tabs-mode: nil # End: gcc/d/ChangeLog: * implement-d.texi: Reorder index entries around @items. gcc/ChangeLog: * doc/cfg.texi: Reorder index entries around @items. * doc/cpp.texi: Ditto. * doc/cppenv.texi: Ditto. * doc/cppopts.texi: Ditto. * doc/generic.texi: Ditto. * doc/install.texi: Ditto. * doc/extend.texi: Ditto. * doc/invoke.texi: Ditto. * doc/md.texi: Ditto. * doc/rtl.texi: Ditto. * doc/tm.texi.in: Ditto. * doc/trouble.texi: Ditto. * doc/tm.texi: Regenerate. gcc/fortran/ChangeLog: * invoke.texi: Reorder index entries around @items. gcc/go/ChangeLog: * gccgo.texi: Reorder index entries around @items.
2023-01-18Daily bump.GCC Administrator1-0/+6
2023-01-17go: define two builtin functions used by middle-endIan Lance Taylor1-0/+10
PR go/108426 * go-gcc.cc (Gcc_backend::Gcc_backend): Define __builtin_ctzl and __builtin_clzl. Patch by Andrew Pinski.
2023-01-16Update copyright years.Jakub Jelinek13-13/+13
2023-01-03Daily bump.GCC Administrator1-0/+4
2023-01-02Update copyright dates.Jakub Jelinek1-1/+1
Manual part of copyright year updates. 2023-01-02 Jakub Jelinek <jakub@redhat.com> gcc/ * gcc.cc (process_command): Update copyright notice dates. * gcov-dump.cc (print_version): Ditto. * gcov.cc (print_version): Ditto. * gcov-tool.cc (print_version): Ditto. * gengtype.cc (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/ada/ * gnat_ugn.texi: Bump @copying's copyright year. * gnat_rm.texi: Likewise. gcc/d/ * gdc.texi: Bump @copyrights-d year. gcc/fortran/ * gfortranspec.cc (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. libgomp/ * libgomp.texi: Bump @copying's copyright year. libitm/ * libitm.texi: Bump @copying's copyright year. libquadmath/ * libquadmath.texi: Bump @copying's copyright year.
2023-01-02Update Copyright year in ChangeLog filesJakub Jelinek1-1/+1
2022 -> 2023
2022-12-22compiler: remove unused fieldsIan Lance Taylor8-34/+19
This avoids clang warnings: gcc/go/gofrontend/escape.cc:1290:17: warning: private field 'fn_' is not used [-Wunused-private-field] gcc/go/gofrontend/escape.cc:3478:19: warning: private field 'context_' is not used [-Wunused-private-field] gcc/go/gofrontend/lex.h:564:15: warning: private field 'input_file_name_' is not used [-Wunused-private-field] gcc/go/gofrontend/types.cc:5788:20: warning: private field 'call_' is not used [-Wunused-private-field] gcc/go/gofrontend/wb.cc:206:9: warning: private field 'gogo_' is not used [-Wunused-private-field] Path by Martin Liška. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/458975
2022-12-20libgo: check for makecontext in -lucontextIan Lance Taylor1-1/+1
Patch from Sören Tempel. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/458396
2022-12-12libgo: bump major versionIan Lance Taylor1-1/+1
PR go/108057 The current version is the same as for the previous GCC release, but there have been minor changes like new type descriptors that make it impossible to run Go programs built with the previous GCC release with the current libgo. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/456976
2022-11-30runtime: force XSI strerror on hurdIan Lance Taylor1-1/+1
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/454275
2022-11-29syscall, runtime: always call XSI strerror_rIan Lance Taylor1-1/+1
This does the right thing for either glibc or musl on GNU/Linux. Based on patch by Sören Tempel. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/454176
2022-11-21changelog: Fix extra space after tab.Martin Liska1-26/+26
2022-11-15Daily bump.GCC Administrator1-0/+86
2022-11-14Revert "sphinx: copy files from texi2rst-generated repository"Martin Liska13-570/+0
This reverts commit c63539ffe4c0e327337a1a51f638d9c8c958cb26.
2022-11-14Revert "sphinx: support Sphinx in build system"Martin Liska1-29/+36
This reverts commit 41a45cba0021f597dbfdec1f782026215ea21726.
2022-11-14Revert "sphinx: remove texinfo files"Martin Liska1-0/+521
This reverts commit 54ca4eef58661a7d7a511e2bbbe309bde1732abf.
2022-11-14Revert "sphinx: add --with-sphinx-build"Martin Liska1-5/+5
This reverts commit 1f5a932e89b0c2c4a7af7f849ca2e2e3dbf329e0.
2022-11-14Revert "sphinx: support installation if sphinx-build is missing"Martin Liska1-2/+5
This reverts commit e5821d3f62b5bf532db1be661459b7553a956fa2.
2022-11-14Revert "sphinx: add missing trailing newline"Martin Liska12-12/+12
This reverts commit 3ed1b4ce7c9bdf8c777d12da0f5fe4cae8ba7c8e.
2022-11-14Revert "sphinx: add missing newline for conf.py files."Martin Liska1-1/+1
This reverts commit bd044dae51caea3c641f86ec5cb0ebccf7e06de7.
2022-11-11Daily bump.GCC Administrator1-0/+4