JeanHeyd Meneide [Thu, 5 Sep 2019 11:27:45 +0000 (11:27 +0000)]
Implement std::span for C++20
2019-09-05 JeanHeyd Meneide <phdofthehouse@gmail.com>
* include/Makefile.am: Add <span> header.
* include/Makefile.in: Regenerate.
* include/bits/range_access.h (__adl_begin, __adl_end, __adl_cbegin)
(__adl_cend, __adl_rbegin, __adl_rend, __adl_crbegin, __adl_crend)
(__adl_data, __adl_cdata, __adl_size, __adl_empty, __adl_to_address):
New functions for performing argument-dependent lookup of range
customization points.
* include/bits/stl_iterator.h (__normal_iterator): Add
_GLIBCXX20_CONSTEXPR to all functions.
* include/std/span: New header.
* include/std/version (__cpp_lib_span): Define feature test macro.
* testsuite/23_containers/span/contiguous_range_neg.cc: New test.
* testsuite/23_containers/span/everything.cc: New test.
* testsuite/23_containers/span/get_neg.cc: New test.
* testsuite/23_containers/span/last_neg.cc: New test.
* testsuite/23_containers/span/subspan_neg.cc: New test.
* testsuite/23_containers/span/tuple_element_dynamic_neg.cc: New test.
* testsuite/23_containers/span/tuple_element_oob_neg.cc: New test.
* testsuite/23_containers/span/tuple_size_neg.cc: New test.
From-SVN: r275403
Nathan Sidwell [Thu, 5 Sep 2019 11:23:48 +0000 (11:23 +0000)]
[preprocessor/91639] #includes at EOF
https://gcc.gnu.org/ml/gcc-patches/2019-09/msg00280.html
libcpp/
PR preprocessor/91639
* directives.c (do_include_common): Tell lexer we're a #include.
* files.c (_cpp_stack_file): Lexer will have always incremented.
* internal.h (struct cpp_context): Extend in_directive's
semantics.
* lex.c (_cpp_lex_direct): Increment line for final \n when lexing
for an ISO #include.
* line-map.c (linemap_line_start): Remember if we overflowed.
gcc/testsuite/
PR preprocessor/91639
* c-c++-common/cpp/pr91639.c: New.
* c-c++-common/cpp/pr91639-one.h: New.
* c-c++-common/cpp/pr91639-two.h: New.
From-SVN: r275402
Richard Biener [Thu, 5 Sep 2019 11:02:43 +0000 (11:02 +0000)]
re PR middle-end/90501 (ICE: address taken, but ADDRESSABLE bit not set)
2019-09-05 Richard Biener <rguenther@suse.de>
PR middle-end/90501
* tree-inline.c (declare_return_variable): Mark the return
slot as addressable after building an address of it.
From-SVN: r275401
Arnaud Charlet [Thu, 5 Sep 2019 09:51:38 +0000 (09:51 +0000)]
install.texi: Update and clarify requirements to build GNAT.
* doc/install.texi: Update and clarify requirements to build GNAT.
From-SVN: r275400
Richard Sandiford [Thu, 5 Sep 2019 07:50:07 +0000 (07:50 +0000)]
Force IFN_LOAD/STORE_LANES operands to be memory (PR91577)
This patch uses the workaround Richi suggested in the PR: make
discover_nonconstant_array_refs mark the source of an IFN_LOAD_LANES
call and the destination of an IFN_STORE_LANES call as addressable,
so that they don't end up being REG rtxes during expansion.
I had to move the discover_nonconstant_array_refs call outside the
currently_expanding_to_rtl block since otherwise mark_addressable
just queues the decision for later.
2019-09-05 Richard Sandiford <richard.sandiford@arm.com>
gcc/
PR middle-end/91577
* cfgexpand.c (discover_nonconstant_array_refs): Force the source
of an IFN_LOAD_LANES call and the destination of an IFN_STORE_LANES
call to be in memory.
(pass_expand::execute): Call discover_nonconstant_array_refs before
setting currently_expanding_to_rtl.
gcc/testsuite/
PR middle-end/91577
* gfortran.dg/pr91577.f90: New test, taken from temporary_1.f90.
From-SVN: r275399
Jonathan Wakely [Thu, 5 Sep 2019 07:46:00 +0000 (08:46 +0100)]
Remove broken URL from libstdc++ manual
The URL for the "What Are Allocators Good For?" article has been a
recurring source of problems. It moved from the C/C++ Users Journal
website to the Dr Dobbs site after CUJ shut down, and the original
domain changed hands, leaving old links pointing to nefarious sites.
Now the URL to the copy on drdobbs.com no longer works either and I
can't find a (legal) copy of the article online. The simplest solution
is to remove the URL.
* doc/xml/manual/allocator.xml: Remove URL for bibliography entry.
* doc/html/*: Regenerate.
From-SVN: r275398
Janne Blomqvist [Thu, 5 Sep 2019 06:59:55 +0000 (09:59 +0300)]
Improve PRNG jumping when using threads
Currently, when a new thread needs to use the RANDOM_NUMBER intrinsic,
the per-thread PRNG state is initialized by copying the master state
and then jumping forwards N*2**128 entries in the stream so that the
PRNG streams for different threads don't alias each other, where N is
the number of threads that have so far initialized the PRNG.
With this patch the master state itself is jumped forwards once each
time a new thread initializes the PRNG, thus obviating the need to
jump through all the N-1 previous streams. Effectively turning an O(N)
algorithm into an O(1) one.
Regtested on x86_64-pc-linux-gnu.
libgfortran/ChangeLog:
2019-09-05 Janne Blomqvist <jb@gcc.gnu.org>
* intrinsics/random.c (master_init): Replace with
master_state.init.
(njumps): Remove variable.
(master_state): Make instance of struct prng_state.
(init_rand_state): When jumping, update the master_state once
instead of keeping track of how many jumps need to be done.
(SZU64): Modify to handle new master_state.
(SZ): Likewise.
(random_seed_i4): Likewise.
(random_seed_i8): Likewise.
From-SVN: r275397
Ian Lance Taylor [Thu, 5 Sep 2019 04:12:30 +0000 (04:12 +0000)]
re PR tree-optimization/91663 (split function can be re-inlined, leaving bad stack trace)
PR tree-optimization/91663
* go-lang.c (go_langhook_post_options): Clear
flag_partial_inlining.
From-SVN: r275396
GCC Administrator [Thu, 5 Sep 2019 00:16:27 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r275395
Steven G. Kargl [Wed, 4 Sep 2019 23:21:12 +0000 (23:21 +0000)]
re PR fortran/91650 (ICE in gfc_conv_constant_to_tree, at fortran/trans-const.c:370)
2019-09-04 Steven G. Kargl <kargl@gcvc.gnu.org>
PR fortran/91650
* io.c (match_io_element): An output IO list item cannot be a BOZ.
2019-09-04 Steven G. Kargl <kargl@gcvc.gnu.org>
PR fortran/91650
* gfortran.dg/pr91650_1.f90: New test.
* gfortran.dg/pr91650_2.f90: Ditto.
From-SVN: r275391
Mike Crowe [Wed, 4 Sep 2019 22:43:29 +0000 (22:43 +0000)]
PR libstdc++/41861 Add full steady_clock support to condition_variable
The pthread_cond_clockwait function is available in glibc since the 2.30
release. If this function is available in the C library it can be used
to fix PR libstdc++/41861 by supporting std::chrono::steady_clock
properly with std::condition_variable.
This means that code using std::condition_variable::wait_for or
std::condition_variable::wait_until with std::chrono::steady_clock is no
longer subject to timing out early or potentially waiting for much
longer if the system clock is warped at an inopportune moment.
If pthread_cond_clockwait is available then std::chrono::steady_clock is
deemed to be the "best" clock available which means that it is used for
the relative wait_for calls and absolute wait_until calls using
user-defined clocks. Calls explicitly using std::chrono::system_clock
continue to use CLOCK_REALTIME via __gthread_cond_timedwait.
If pthread_cond_clockwait is not available then
std::chrono::system_clock is deemed to be the "best" clock available
which means that the previous suboptimal behaviour remains.
2019-09-04 Mike Crowe <mac@mcrowe.com>
PR libstdc++/41861
* acinclude.m4 (GLIBCXX_CHECK_PTHREAD_COND_CLOCKWAIT): Check for new
pthread_cond_clockwait function.
* configure.ac: Use GLIBCXX_CHECK_PTHREAD_COND_CLOCKWAIT.
* configure: Regenerate.
* config.h.in: Regenerate.
* include/std/condition_variable: (condition_variable): Rename
__steady_clock_t typedef and add system_clock. Change __clock_t to be
a typedef for the preferred clock to convert arbitrary other clocks to.
[_GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT] (wait_until): Add a steady_clock
overload.
(wait_until): Change __clock_t overload to use system_clock.
[_GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT] (__wait_until_impl): Add
steady_clock overload that calls pthread_cond_clockwait.
(__wait_until_impl): Change __clock_t overload to use system_clock.
(condition_variable_any) [_GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT]: Use
steady_clock for __clock_t if pthread_cond_clockwait is available.
From-SVN: r275390
Mike Crowe [Wed, 4 Sep 2019 22:43:20 +0000 (22:43 +0000)]
Add user-defined clock to libstdc++ condition_variable tests
2019-09-04 Mike Crowe <mac@mcrowe.com>
* testsuite/30_threads/condition_variable/members/2.cc (test01):
Parameterise so that test can be run against an arbitrary clock.
(main): Test using std::chrono::steady_clock and a user-defined
clock in addition to the previous std::chrono::system_clock.
* testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
From-SVN: r275389
Caroline Tice [Wed, 4 Sep 2019 22:33:27 +0000 (15:33 -0700)]
Disallow -fvtable-verify and -flto to be used together.
Vtable verification currently does not work properly with
link time optimization. Until this can be fixed users should
not be allowed to specify both options together.
2019-09-04 Caroline Tice <cmtice@google.com>
* opts.c (finish_options): Disallow -fvtable-verify and -flto to be
specified together.
From-SVN: r275388
Marek Polacek [Wed, 4 Sep 2019 20:10:13 +0000 (20:10 +0000)]
Remove -fdeduce-init-list.
From-SVN: r275387
Uros Bizjak [Wed, 4 Sep 2019 18:25:05 +0000 (20:25 +0200)]
re PR target/32413 (internal compiler error: in reload_cse_simplify_operands, at postreload.c:396)
PR target/32413
* config/i386/i386.c (inline_secondary_memory_needed): Return true
for QI and HImode moves between SSE and general registers.
From-SVN: r275377
Prathamesh Kulkarni [Wed, 4 Sep 2019 16:25:21 +0000 (16:25 +0000)]
Add warning Wenum-conversion for C and ObjC.
The patch enables warning with Wextra due to PR91593 and warnings with
allmodconfig kernel build. Once these issues are resolved, we could
consider promoting it to Wall.
2019-09-04 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
PR c/78736
* doc/invoke.texi: Document -Wenum-conversion.
c-family
* c.opt (Wenum-conversion): New option.
c/
* c-typeck.c (convert_for_assignment): Handle Wenum-conversion.
testsuite/
* gcc.dg/Wenum-conversion.c: New test-case.
From-SVN: r275376
Martin Liska [Wed, 4 Sep 2019 08:08:20 +0000 (10:08 +0200)]
mklog: Do not print changed functions in testsuite
2019-09-04 Martin Liska <mliska@suse.cz>
* mklog: Do not print changed functions for
testsuite files.
From-SVN: r275369
Martin Liska [Wed, 4 Sep 2019 08:08:06 +0000 (10:08 +0200)]
mklog: parse PR references from new test files
2019-09-04 Martin Liska <mliska@suse.cz>
* mklog: Parse PR references from newly added
test files.
From-SVN: r275368
Martin Liska [Wed, 4 Sep 2019 08:07:37 +0000 (10:07 +0200)]
Use argparse.ArgumentParser for mklog.
2019-09-04 Martin Liska <mliska@suse.cz>
* mklog: Use argparse instead of getopt.
From-SVN: r275367
Richard Biener [Wed, 4 Sep 2019 07:27:42 +0000 (07:27 +0000)]
re PR middle-end/36262 (Extreme memory usage of VRP compared to older versions)
2019-09-04 Richard Biener <rguenther@suse.de>
PR rtl-optimization/36262
* postreload-gcse.c: Include intl.h and gcse.h.
(insert_expr_in_table): Insert at the head of cur_expr->avail_occr
to avoid linear list walk.
(record_last_mem_set_info): Gate off if not computing transparentness.
(get_bb_avail_insn): If transparentness isn't computed give up
early.
(gcse_after_reload_main): Skip compute_transp and extended PRE
if gcse_or_cprop_is_too_expensive says so.
From-SVN: r275365
Steven G. Kargl [Wed, 4 Sep 2019 03:43:40 +0000 (03:43 +0000)]
gfortran.texi: Update documentation to catch up with BOZ changes.
2019-09-03 Steven G. Kargl <kargl@gcc.gnu.org>
* gfortran.texi: Update documentation to catch up with BOZ changes.
* invoke.texi: Fix English from previous BOZ changes commit.
From-SVN: r275364
GCC Administrator [Wed, 4 Sep 2019 00:16:33 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r275362
Ian Lance Taylor [Tue, 3 Sep 2019 23:35:13 +0000 (23:35 +0000)]
compiler: only import variable into . if same package
If we dot-import a package, we should only add an imported variable to
the package bindings if the variable is in the package being imported.
A test case for this is the 1.13 os package, in which ErrClosed and
friends are defined both locally and in the imported internal/oserror package.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/192718
From-SVN: r275358
Jozef Lawrynowicz [Tue, 3 Sep 2019 20:57:02 +0000 (20:57 +0000)]
MSP430: Use default_elf_select_section to determine sections for data
2019-09-03 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* config/msp430/msp430.c (msp430_init_sections): Remove handling of the
noinit section.
(msp430_select_section): Handle decls with the "noinit" attribute with
default_elf_select_section.
Handle SECCAT_RODATA_MERGE_* section types with
default_elf_select_section.
Add comments about handling of unsupported section types.
(msp430_section_type_flags): Remove handling of the noinit section.
From-SVN: r275357
Jozef Lawrynowicz [Tue, 3 Sep 2019 20:48:55 +0000 (20:48 +0000)]
MSP430: Setup exclusion tables for function and data attributes
gcc/ChangeLog:
2019-09-03 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* config/msp430/msp430.c (msp430_attr): Remove warnings about
conflicting msp430-specific attributes.
(msp430_section_attr): Likewise.
Add warnings about conflicts with generic "noinit" and "section"
attributes.
Fix grammar in -mlarge error message.
(msp430_data_attr): Rename to msp430_persist_attr.
Add warnings about conflicts with generic "noinit" and "section"
attributes.
Add warning for when variable is not initialized.
Chain conditionals which prevent the attribute being added.
(ATTR_EXCL): New helper.
(attr_reent_exclusions): New exclusion table.
(attr_naked_exclusions): Likewise.
(attr_crit_exclusions): Likewise.
(attr_lower_exclusions): Likewise.
(attr_upper_exclusions): Likewise.
(attr_either_exclusions): Likewise.
(attr_persist_exclusions): Likewise.
(msp430_attribute_table): Update with exclusion rules.
(msp430_output_aligned_decl_common): Don't output common symbol if decl
has a section.
gcc/testsuite/ChangeLog:
2019-09-03 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* gcc.target/msp430/data-attributes-2.c: New test.
* gcc.target/msp430/function-attributes-4.c: Update dg-warning
strings.
* gcc.target/msp430/region-attribute-misuse.c: Likewise.
From-SVN: r275356
Jozef Lawrynowicz [Tue, 3 Sep 2019 20:36:49 +0000 (20:36 +0000)]
Implement TARGET_HANDLE_GENERIC_ATTRIBUTE
gcc/ChangeLog:
2019-09-03 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* config/msp430/msp430.c (TARGET_HANDLE_GENERIC_ATTRIBUTE): Define.
(msp430_handle_generic_attribute): New function.
* doc/tm.texi: Regenerate.
* doc/tm.texi.in: Add TARGET_HANDLE_GENERIC_ATTRIBUTE.
* hooks.c (hook_tree_treeptr_tree_tree_int_boolptr_null): New.
* hooks.h (hook_tree_treeptr_tree_tree_int_boolptr_null): New.
* target.def: Define new hook TARGET_HANDLE_GENERIC_ATTRIBUTE.
gcc/c-family/ChangeLog:
2019-09-03 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* c-attribs.c (handle_section_attribute): Call the
handle_generic_attribute target hook after performing target
independent processing.
(handle_noinit_attribute): Likewise.
From-SVN: r275355
Kamlesh Kumar [Tue, 3 Sep 2019 20:13:22 +0000 (20:13 +0000)]
re PR tree-optimization/91504 (Inlining misses some logical operation folding)
PR tree-optimization/91504
* match.pd: Add ((~a & b) ^a) --> (a | b).
PR tree-optimization/91504
gcc.dg/tree-ssa/pr91504.c: New test.
From-SVN: r275354
Eduard-Mihai Burtescu [Tue, 3 Sep 2019 20:04:32 +0000 (22:04 +0200)]
rust-demangle.c (unescape): Remove.
* rust-demangle.c (unescape): Remove.
(parse_lower_hex_nibble): New function.
(parse_legacy_escape): New function.
(is_prefixed_hash): Use parse_lower_hex_nibble.
(looks_like_rust): Use parse_legacy_escape.
(rust_demangle_sym): Use parse_legacy_escape.
* testsuite/rust-demangle-expected: Add 'llv$u6d$' test.
From-SVN: r275353
Ian Lance Taylor [Tue, 3 Sep 2019 19:42:38 +0000 (19:42 +0000)]
c-cppbuiltin.c (builtin_define_with_hex_fp_value): Always expand when using -fgo-dump-spec.
* c-cppbuiltin.c (builtin_define_with_hex_fp_value): Always expand
when using -fgo-dump-spec.
From-SVN: r275352
Jakub Jelinek [Tue, 3 Sep 2019 16:46:06 +0000 (18:46 +0200)]
re PR target/91604 (ICE in extract_insn at recog.c:2310 since r272323)
PR target/91604
* config/i386/i386-expand.c (split_double_mode): If there is more than
one MEM operand and they are rtx_equal_p, reuse lo_half/hi_half from
already split matching MEM operand instead of calling adjust_address
again.
* gcc.target/i386/pr91604.c: New test.
From-SVN: r275344
Ulrich Weigand [Tue, 3 Sep 2019 15:08:28 +0000 (15:08 +0000)]
Remove Cell Broadband Engine SPU targets
From-SVN: r275343
Bernd Edlinger [Tue, 3 Sep 2019 14:37:41 +0000 (14:37 +0000)]
re PR middle-end/91603 (Unaligned access in expand_assignment)
2019-09-03 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR middle-end/91603
PR middle-end/91612
PR middle-end/91613
* expr.c (expand_expr_real_1): Handle unaligned decl_rtl
and SSA_NAME referring to CONSTANT_P correctly.
testsuite:
2019-09-03 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR middle-end/91603
* testsuite/gcc.target/arm/pr91603.c: New test.
From-SVN: r275342
Chung-Lin Tang [Tue, 3 Sep 2019 14:10:26 +0000 (14:10 +0000)]
re PR other/79543 (Inappropriate "ld --version" checking)
2019-09-03 Chung-Lin Tang <cltang@codesourcery.com>
libatomic/
PR other/79543
* acinclude.m4 (LIBAT_CHECK_LINKER_FEATURES): Fix GNU ld --version
scanning to conform to the GNU Coding Standards.
* configure: Regenerate.
libffi/
PR other/79543
* acinclude.m4 (LIBAT_CHECK_LINKER_FEATURES): Fix GNU ld --version
scanning to conform to the GNU Coding Standards.
* configure: Regenerate.
libgomp/
PR other/79543
* acinclude.m4 (LIBGOMP_CHECK_LINKER_FEATURES): Fix GNU ld --version
scanning to conform to the GNU Coding Standards.
* configure: Regenerate.
libitm/
PR other/79543
* acinclude.m4 (LIBITM_CHECK_LINKER_FEATURES): Fix GNU ld --version
scanning to conform to the GNU Coding Standards.
* configure: Regenerate.
libstdc++-v3/
PR other/79543
* acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Fix GNU ld --version
scanning to conform to the GNU Coding Standards.
* configure: Regenerate.
From-SVN: r275341
Richard Biener [Tue, 3 Sep 2019 11:24:18 +0000 (11:24 +0000)]
tree-ssa-sccvn.h (vn_nary_op_lookup): Remove.
2019-09-03 Richard Biener <rguenther@suse.de>
* tree-ssa-sccvn.h (vn_nary_op_lookup): Remove.
(vn_nary_op_insert): Likewise.
* tree-ssa-sccvn.c (init_vn_nary_op_from_op): Remove.
(vn_nary_op_lookup): Likewise.
(vn_nary_op_insert): Likewise.
From-SVN: r275338
Ilya Leoshkevich [Tue, 3 Sep 2019 10:27:04 +0000 (10:27 +0000)]
S/390: Commit forgotten test for r275336
gcc/testsuite/ChangeLog:
2019-09-03 Ilya Leoshkevich <iii@linux.ibm.com>
* gcc.target/s390/sigfpe-eh.c: Forgotten test.
From-SVN: r275337
Ilya Leoshkevich [Tue, 3 Sep 2019 09:29:02 +0000 (09:29 +0000)]
S/390: Fix failing RTL check in s390_canonicalize_comparison
The new sigfpe-eh.c fails with
internal compiler error: RTL check: expected elt 0 type 'e' or 'u', have 'w' (rtx const_int)
This is most likely due to a typo: XEXP (*op1, 0) was used, when
XEXP (*op0, 1) was intended. This did not cause any user-visible
problems, because reversed_comparison_code_parts ignores the
respective argument, and the release compiler is built without RTL
checks.
gcc/ChangeLog:
2019-09-03 Ilya Leoshkevich <iii@linux.ibm.com>
* config/s390/s390.c (s390_canonicalize_comparison): Use XEXP
(*op0, 1) instead of XEXP (*op1, 0).
gcc/testsuite/ChangeLog:
2019-09-03 Ilya Leoshkevich <iii@linux.ibm.com>
* gcc.target/s390/sigfpe-eh.c: New test.
From-SVN: r275336
Kyrylo Tkachov [Tue, 3 Sep 2019 08:40:30 +0000 (08:40 +0000)]
[AArch64] Add support for __jcvt intrinsic
This patch implements the __jcvt ACLE intrinsic [1] that maps down to the FJCVTZS [2] instruction from Armv8.3-a.
No fancy mode iterators or nothing. Just a single builtin, UNSPEC and define_insn and the associate plumbing.
This patch also defines __ARM_FEATURE_JCVT to indicate when the intrinsic is available.
[1] https://developer.arm.com/docs/101028/latest/data-processing-intrinsics
[2] https://developer.arm.com/docs/ddi0596/latest/simd-and-floating-point-instructions-alphabetic-order/fjcvtzs-floating-point-javascript-convert-to-signed-fixed-point-rounding-toward-zero
* config/aarch64/aarch64.md (UNSPEC_FJCVTZS): Define.
(aarch64_fjcvtzs): New define_insn.
* config/aarch64/aarch64.h (TARGET_JSCVT): Define.
* config/aarch64/aarch64-builtins.c (aarch64_builtins):
Add AARCH64_JSCVT.
(aarch64_init_builtins): Initialize __builtin_aarch64_jcvtzs.
(aarch64_expand_builtin): Handle AARCH64_JSCVT.
* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define
__ARM_FEATURE_JCVT where appropriate.
* config/aarch64/arm_acle.h (__jcvt): Define.
* gcc.target/aarch64/acle/jcvt_1.c: New test.
From-SVN: r275335
Kyrylo Tkachov [Tue, 3 Sep 2019 08:38:08 +0000 (08:38 +0000)]
[AArch64] Implement ACLE intrinsics for FRINT[32,64][Z,X]
This patch implements the ACLE intrinsics to access the FRINT[32,64][Z,X] scalar[1] and vector[2][3] instructions
from Armv8.5-a. These are enabled when the __ARM_FEATURE_FRINT macro is defined.
They're added in a fairly standard way through builtins and unspecs at the RTL level.
* config/aarch64/aarch64.md ("unspec"): Add UNSPEC_FRINT32Z,
UNSPEC_FRINT32X, UNSPEC_FRINT64Z, UNSPEC_FRINT64X.
(aarch64_<frintnzs_op><mode>): New define_insn.
* config/aarch64/aarch64.h (TARGET_FRINT): Define.
* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define
__ARM_FEATURE_FRINT when appropriate.
* config/aarch64/aarch64-simd-builtins.def: Add builtins for frint32z,
frint32x, frint64z, frint64x.
* config/aarch64/arm_acle.h (__rint32zf, __rint32z, __rint64zf,
__rint64z, __rint32xf, __rint32x, __rint64xf, __rint64x): Define.
* config/aarch64/arm_neon.h (vrnd32z_f32, vrnd32zq_f32, vrnd32z_f64,
vrnd32zq_f64, vrnd32x_f32, vrnd32xq_f32, vrnd32x_f64, vrnd32xq_f64,
vrnd64z_f32, vrnd64zq_f32, vrnd64z_f64, vrnd64zq_f64, vrnd64x_f32,
vrnd64xq_f32, vrnd64x_f64, vrnd64xq_f64): Define.
* config/aarch64/iterators.md (VSFDF): Define.
(FRINTNZX): Likewise.
(frintnzs_op): Likewise.
* gcc.target/aarch64/acle/rintnzx_1.c: New test.
* gcc.target/aarch64/simd/vrndnzx_1.c: Likewise.
From-SVN: r275334
Dennis Zhang [Tue, 3 Sep 2019 08:27:58 +0000 (08:27 +0000)]
[AArch64] Add support for missing CPUs
This patch adds '-mcpu' options for following CPUs:
Cortex-A77, Cortex-A76AE, Cortex-A65, Cortex-A65AE, and Cortex-A34.
Related specifications are as following:
https://developer.arm.com/ip-products/processors/cortex-a
Bootstraped/regtested for aarch64-none-linux-gnu.
2019-09-03 Dennis Zhang <dennis.zhang@arm.com>
* config/aarch64/aarch64-cores.def (AARCH64_CORE): New entries
for Cortex-A77, Cortex-A76AE, Cortex-A65, Cortex-A65AE, and
Cortex-A34.
* config/aarch64/aarch64-tune.md: Regenerated.
* doc/invoke.texi: Document the new processors.
From-SVN: r275333
Bernd Edlinger [Tue, 3 Sep 2019 08:24:03 +0000 (08:24 +0000)]
libphobos.exp (libphobos_init): Add multi-lib libgcc dirs to the ld_library_path var.
2019-09-03 Bernd Edlinger <bernd.edlinger@hotmail.de>
* testsuite/lib/libphobos.exp (libphobos_init): Add multi-lib libgcc
dirs to the ld_library_path var.
From-SVN: r275332
Kyrylo Tkachov [Tue, 3 Sep 2019 08:06:43 +0000 (08:06 +0000)]
[AArch64] Add Linux hwcap strings for some extensions
This patch adds feature strings for some of the extensions. This string is what is read from /proc/cpuinfo on Linux systems
and used during -march=native detection.
The strings are taken from the kernel source tree at:
https://github.com/torvalds/linux/blob/master/arch/arm64/kernel/cpuinfo.c#L45
* config/aarch64/aarch64-option-extensions.def (sb): Add feature
string.
(ssbs): Likewise.
(sve2): Likewise.
(sve2-sm4): Likewise.
(sveaes): Likewise.
(svesha3): Likewise.
(svebitperm): Likewise.
From-SVN: r275331
Jakub Jelinek [Tue, 3 Sep 2019 07:50:46 +0000 (09:50 +0200)]
re PR tree-optimization/91597 (GCC miscompiles a branch depending on a pointer tag)
PR tree-optimization/91597
* tree-vrp.c (extract_range_from_binary_expr): Remove unsafe
BIT_AND_EXPR optimization for pointers, even if both operand
ranges don't include NULL, the result can be NULL.
* gcc.c-torture/execute/pr91597.c: New test.
Co-Authored-By: Richard Biener <rguenther@suse.de>
From-SVN: r275330
Alexandre Oliva [Tue, 3 Sep 2019 06:06:02 +0000 (06:06 +0000)]
[x86 testsuite] preserve full register across main
This test uses a call-saved register as a global variable. It
attempts to preserve its value across main, but only the lower int
part is preserved, which is not good enough for x86_64, when the
runtime that calls main() happens to hold something in the chosen
register that is not a zero-extension from the 32-bit value, and
rightfully expects the full register to remain unchanged when main()
returns.
for gcc/testsuite/ChangeLog
* gcc.target/i386/
20020616-1.c: Preserve full register across
main.
From-SVN: r275329
GCC Administrator [Tue, 3 Sep 2019 00:16:40 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r275328
Paul Thomas [Mon, 2 Sep 2019 19:54:02 +0000 (19:54 +0000)]
re PR fortran/91589 (ICE in gfc_conv_component_ref, at fortran/trans-expr.c:2447)
2019-09-02 Paul Thomas <pault@gcc.gnu.org>
PR fortran/91589
* primary.c (gfc_match_varspec): Return MATCH_NO on an apparent
component ref, when the primary type is intrinsic.
2019-09-02 Paul Thomas <pault@gcc.gnu.org>
PR fortran/91589
* gfortran.dg/pr91589.f90 : New test.
From-SVN: r275324
Steven G. Kargl [Mon, 2 Sep 2019 16:46:54 +0000 (16:46 +0000)]
re PR fortran/91552 (ICE with valid array constructor)
2019-09-02 Steven G. Kargl <kargl@gc.gnu.org>
PR fortran/91552
* array.c (walk_array_constructor): New function.
(gfc_match_array_constructor): Use it.
2019-09-02 Steven G. Kargl <kargl@gc.gnu.org>
PR fortran/91552
* gfortran.dg/pr91552.f90: New test.
From-SVN: r275322
Bernd Edlinger [Mon, 2 Sep 2019 14:26:26 +0000 (14:26 +0000)]
re PR middle-end/91605 (ICE in ix86_avx256_split_vector_move_misalign, at config/i386/i386-expand.c:489 since r274986)
2019-09-02 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR middle-end/91605
* expr.c (addr_expr_of_non_mem_decl_p_1): Refactor into...
(non_mem_decl_p): ...this.
(mem_ref_refers_to_non_mem_p): Handle DECL_P as well ase MEM_REF.
(expand_assignment): Call mem_ref_referes_to_non_mem_p
unconditionally as before.
testsuite:
2019-09-02 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR middle-end/91605
* g++.target/i386/pr91605.C: New test.
From-SVN: r275320
Jakub Jelinek [Mon, 2 Sep 2019 13:35:54 +0000 (15:35 +0200)]
re PR tree-optimization/91632 (Probably wrong code since r275026)
PR tree-optimization/91632
* gcc.c-torture/execute/pr91632.c: New test.
From-SVN: r275318
Alexander Monakov [Mon, 2 Sep 2019 12:30:02 +0000 (15:30 +0300)]
contrib/vimrc: override formatting options for more files
* vim-gcc-dev/syntax/gcc-match.vim: Do not override 'tabstop' here.
* vimrc: Set preferred values for 'tabstop', 'softtabstop',
'shiftwidth', 'noexpandtab', 'textwidth', 'formatoptions' for all
files, not just C-like files.
From-SVN: r275316
Jonathan Wakely [Mon, 2 Sep 2019 11:31:34 +0000 (12:31 +0100)]
Use __constinit keyword in libstdc++ sources
* src/c++17/memory_resource.cc: Use __constinit keyword.
From-SVN: r275315
Jonathan Wakely [Mon, 2 Sep 2019 11:31:30 +0000 (12:31 +0100)]
Update libstdc++ docs for library version bumps
* doc/xml/manual/abi.xml: Document 9.x library versions.
* doc/html/*: Regenerate.
From-SVN: r275314
Jonathan Wakely [Mon, 2 Sep 2019 11:31:25 +0000 (12:31 +0100)]
Minor simplifications for std::to_chars implementation
* include/std/charconv (__detail::__to_chars_2_len): Use std::log2p1.
(__detail::__to_chars_8_len): Remove.
(__detail::__to_chars_8): Inline length calculation here.
(__detail::__from_chars_binary): Use numeric_limits instead of
CHAR_BIT.
From-SVN: r275313
Eric Botcazou [Mon, 2 Sep 2019 10:10:23 +0000 (10:10 +0000)]
re PR target/91323 (LTGT rtx produces UCOMISS instead of COMISS)
PR target/91323
* doc/generic.texi (LTGT_EXPR): Merge with other comparison operators.
* rtl.def (LTGT): Likewise. Add note about floating-point exceptions.
* tree.def (LTGT_EXPR): Likewise.
* config/sparc/sparc.c (select_cc_mode): Return CCFPEmode for LTGT.
From-SVN: r275303
Jakub Jelinek [Mon, 2 Sep 2019 08:38:13 +0000 (10:38 +0200)]
re PR go/91617 (Many go test case failures after r275026)
PR go/91617
* fold-const.c (range_check_type): For enumeral and boolean
type, pass 1 to type_for_size langhook instead of
TYPE_UNSIGNED (etype). Return unsigned_type_for result whenever
etype isn't TYPE_UNSIGNED INTEGER_TYPE.
(build_range_check): Don't call unsigned_type_for for pointer types.
* match.pd (X / C1 op C2): Don't call unsigned_type_for on
range_check_type result.
From-SVN: r275299
Rainer Orth [Mon, 2 Sep 2019 08:31:07 +0000 (08:31 +0000)]
Update Solaris baselines for GCC 10.0
* config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
* config/abi/post/i386-solaris/amd64/baseline_symbols.txt: Likewise.
* config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
* config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
Likewise.
From-SVN: r275298
Eric Botcazou [Mon, 2 Sep 2019 08:14:47 +0000 (08:14 +0000)]
gimple-ssa-strength-reduction.c (valid_mem_ref_cand_p): New function.
* gimple-ssa-strength-reduction.c (valid_mem_ref_cand_p): New function.
(replace_ref): Do not replace a chain of only two candidates which are
valid memory references.
From-SVN: r275297
Martin Liska [Mon, 2 Sep 2019 07:46:18 +0000 (09:46 +0200)]
Set tabstop=8 for gcc-match file types.
2019-09-02 Martin Liska <mliska@suse.cz>
* vim-gcc-dev/syntax/gcc-match.vim: Set tabstop=8.
From-SVN: r275295
Martin Liska [Mon, 2 Sep 2019 07:09:39 +0000 (09:09 +0200)]
Fix thinko in early bail out in tree-switch-conversion.
2019-09-02 Martin Liska <mliska@suse.cz>
* tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
Bail out when we'll end up with the same number of clusters as
at the beginning.
(bit_test_cluster::find_bit_tests): Likewise for bit tests.
(jump_table_cluster::can_be_handled): Remove the guard
as it's already handled in ::is_enabled. Allocate output
after early bail out.
From-SVN: r275293
Martin Liska [Mon, 2 Sep 2019 07:07:11 +0000 (09:07 +0200)]
Use cxx_printable_name for __PRETTY_FUNCTION__ in cp_fname_init.
2019-09-02 Martin Liska <mliska@suse.cz>
PR c++/91155
* c-common.c (fname_as_string): Use cxx_printable_name for
__PRETTY_FUNCTION__ same as was used before r265711.
2019-09-02 Martin Liska <mliska@suse.cz>
PR c++/91155
* g++.dg/torture/pr91155.C: New test.
From-SVN: r275292
Martin Liska [Mon, 2 Sep 2019 07:06:54 +0000 (09:06 +0200)]
Consider also negative edges in cycle detection.
2019-09-02 Martin Liska <mliska@suse.cz>
PR gcov-profile/91601
* gcov.c (path_contains_zero_cycle_arc): Rename to ...
(path_contains_zero_or_negative_cycle_arc): ... this and handle
also negative edges.
(circuit): Handle also negative edges as they can happen
in some situations.
From-SVN: r275291
GCC Administrator [Mon, 2 Sep 2019 00:16:37 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r275290
Marek Polacek [Sun, 1 Sep 2019 22:54:15 +0000 (22:54 +0000)]
PR c++/91129 - wrong error with binary op in template argument.
* typeck.c (warn_for_null_address): Use fold_for_warn instead of
fold_non_dependent_expr.
(cp_build_binary_op): Likewise.
* g++.dg/cpp1y/nontype1.C: New test.
From-SVN: r275285
François Dumont [Sun, 1 Sep 2019 20:11:42 +0000 (20:11 +0000)]
2019-09-01 François Dumont <fdumont@gcc.gnu.org>
* testsuite_files/util/testsuite_performance.h
(resource_counter::start): Ignore unused malloc(0) result.
From-SVN: r275284
Iain Sandoe [Sun, 1 Sep 2019 18:38:59 +0000 (18:38 +0000)]
[testsuite] Unsupport
20190827-1.c for targets without alias support.
gcc/testsuite/
2019-09-01 Iain Sandoe <iain@sandoe.co.uk>
* gcc.c-torture/compile/
20190827-1.c: Add dg-requires-alias.
From-SVN: r275274
Eric Botcazou [Sun, 1 Sep 2019 12:55:58 +0000 (12:55 +0000)]
target-supports.exp (check_effective_target_pthread): Add #include <pthread.h> directive to the test.
* lib/target-supports.exp (check_effective_target_pthread): Add
#include <pthread.h> directive to the test.
From-SVN: r275271
Eric Botcazou [Sun, 1 Sep 2019 12:55:22 +0000 (12:55 +0000)]
re PR target/91472 (gmp testsuite segfaults with gcc-8 and gcc-9, works fine with gcc-7)
PR target/91472
* config/sparc/sparc.c (sparc_cannot_force_const_mem): Return true
during LRA/reload in PIC mode if the PIC register hasn't been used yet.
(sparc_pic_register_p): Test reload_in_progress for consistency's sake.
From-SVN: r275270
Paul Thomas [Sun, 1 Sep 2019 12:53:02 +0000 (12:53 +0000)]
array.c (spec_dimen_size): Check for the presence of expressions for the bounds.
2019-09-01 Paul Thomas <pault@gcc.gnu.org>
* array.c (spec_dimen_size): Check for the presence of
expressions for the bounds.
* decl.c (gfc_match_end): Add case COMP_SELECT_RANK.
* dump-parse-tree.c(show_symbol): Show the arrayspec of class
entities.
(show_code_node): Show the code for SELECT_RANK.
* expr.c (gfc_check_vardef_context): Omit the context of
variable definition for select rank associate names since the
ASSUMED RANK throws.
* gfortran.h : Add ST_SELECT_RANK and ST_RANK to enum
gfc_statement. Add select_rank_temporary to symbol attribute
structure. Add EXEC_SELECT_RANK to enum gfc_exec_op.
* match.c (match_exit_cycle): Add COMP_SELECT_RANK.
(copy_ts_from_selector_to_associate): Add as special case for
assumed rank class variables.
(select_intrinsic_set_tmp): Clean up the code by using symbols
for references to the temporary and the selector.
(select_type_set_tmp): Ditto.
(select_rank_set_tmp): New function.
(gfc_match_select_rank): New function.
(gfc_match_rank_is): New function.
* match.h : Add prototypes for gfc_match_select_rank and
gfc_match_rank_is.
* parse.c (decode_statement): Attempt to match select_rank and
rank statements.
(next_statement, gfc_ascii_statement): Add ST_SELECT_RANK.
(parse_select_rank_block): New function.
(parse_executable): Parse select rank block for ST_SELECT_RANK.
* parse.h : Add COMP_SELECT_RANK to enum gfc_compile_state.
* resolve.c (resolve_variable): Exclude select_rank_temporaries
from the check on use of ASSUMED RANK.
(gfc_resolve_expr): Make sure that unlimited polymorphic select
rank temporaries expressions are not resolved again after being
successfully resolved.
(resolve_assoc_var): Do not do the rank check for select rank
temporaries.
(resolve_select_rank): New function.
(gfc_resolve_blocks): Deal with case EXEC_SELECT_RANK.
(resolve_symbol): Exclude select rank temporaries for check on
use of ASSUMED RANK.
* st.c (gfc_free_statement): Include EXEC_SELECT_RANK.
* trans-array.c (gfc_conv_array_ref): Select rank temporaries
may have dimen == 0.
(gfc_conv_expr_descriptor): Zero the offset of select rank
temporaries.
* trans-stmt.c (copy_descriptor): New function.
(trans_associate_var): Add code to associate select rank temps.
(gfc_trans_select_rank_cases): New function.
(gfc_trans_select_rank): New function.
* trans-stmt.h : Add prototype for gfc_trans_select_rank.
trans.c (trans_code): Add select rank case.
2019-09-01 Paul Thomas <pault@gcc.gnu.org>
* gfortran.dg/select_rank_1.f90 : New test.
* gfortran.dg/select_rank_2.f90 : New test.
From-SVN: r275269
Gerald Pfeifer [Sun, 1 Sep 2019 12:42:41 +0000 (12:42 +0000)]
policy_data_structures_biblio.xml (COM: Component Model Object Technologies): Adjust name and link.
* doc/xml/manual/policy_data_structures_biblio.xml (COM: Component
Model Object Technologies): Adjust name and link.
From-SVN: r275268
Jakub Jelinek [Sun, 1 Sep 2019 11:57:10 +0000 (13:57 +0200)]
re PR middle-end/91623 (-msse4.1 -O3 segfault in /usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/include/smmintrin.h:270:10)
PR middle-end/91623
* optabs.c (expand_vec_cond_expr): If op0 is a VECTOR_CST and only
EQ_EXPR/NE_EXPR is supported, verify that op0 only contains
zeros or negative elements and use NE_EXPR instead of LT_EXPR against
zero vector.
* gcc.target/i386/pr91623.c: New test.
From-SVN: r275267
Jakub Jelinek [Sun, 1 Sep 2019 11:56:13 +0000 (13:56 +0200)]
re PR lto/91572 (lto1: error: type variant has different ‘TREE_TYPE’ since r269862)
PR lto/91572
* tree.c (find_decls_types_in_node): Also walk TREE_PURPOSE of
GIMPLE_ASM TREE_LIST operands.
* g++.dg/lto/pr91572_0.C: New test.
From-SVN: r275266
Bernd Edlinger [Sun, 1 Sep 2019 10:40:52 +0000 (10:40 +0000)]
Fix wrong dates in ChangeLog
From-SVN: r275265
GCC Administrator [Sun, 1 Sep 2019 00:16:48 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r275264
Jason Merrill [Sat, 31 Aug 2019 22:09:47 +0000 (18:09 -0400)]
Add source location to TRAIT_EXPR.
Since TRAIT_EXPR is exceptional, maybe_wrap_with_location won't wrap it, so
we need to put its location in the TRAIT_EXPR node itself.
* cp-tree.h (TRAIT_EXPR_LOCATION): New.
(struct tree_trait_expr): Add locus field.
* parser.c (cp_parser_trait_expr): Pass trait_loc down.
* pt.c (tsubst_copy_and_build) [TRAIT_EXPR]: Likewise.
* semantics.c (finish_trait_expr): Add location parm.
* tree.c (cp_expr_location): Handle TRAIT_EXPR.
From-SVN: r275260
Joseph Myers [Sat, 31 Aug 2019 21:49:27 +0000 (22:49 +0100)]
* es.po: Update.
From-SVN: r275258
Gerald Pfeifer [Sat, 31 Aug 2019 17:20:28 +0000 (17:20 +0000)]
generic.texi (Unary and Binary Expressions): Mark up an instance of TYPE_MIN.
* doc/generic.texi (Unary and Binary Expressions): Mark up
an instance of TYPE_MIN.
From-SVN: r275243
Stafford Horne [Sat, 31 Aug 2019 06:00:56 +0000 (06:00 +0000)]
or1k: Fix issue with set_got clobbering LR (r9)
When compiling glibc we found that the GOT register was being allocated
r9 when the instruction was still set_got_tmp. That is a problem
because r9 is the Link Register (LR) in OpenRISC which is used/clobbered
in set_got. We cannot use r9 as the GOT register. Also, we cannot
simply say set_got_tmp clobbers r9 as this is the reason for having the
temporary set_got_tmp.
Fix by using a register class constraint that does not allow r9 during
register allocation.
gcc/ChangeLog:
* config/or1k/constraints.md (t): New constraint.
* config/or1k/or1k.h (GOT_REGS): New register class.
* config/or1k/or1k.md (set_got_tmp, set_got): Use t contraint.
From-SVN: r275242
Ian Lance Taylor [Sat, 31 Aug 2019 03:07:48 +0000 (03:07 +0000)]
compiler: check for notinheap struct at each struct field
When generating write barriers, we were only checking for a notinheap
struct at the outermost struct. That mishandled the case of setting a
pointer to a notinheap struct as a field of another struct that is not
notinheap. This caused an invalid write barrier error when building
the 1.13 version of the runtime.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/192279
From-SVN: r275240
Ian Lance Taylor [Sat, 31 Aug 2019 03:01:15 +0000 (03:01 +0000)]
compiler, runtime: support and use single argument go:linkname
The gc compiler has started permitting go:linkname comments with a
single argument to mean that a function should be externally visible
outside the package. Implement this in the Go frontend.
Change the libgo runtime package to use it, rather than repeating the
name just to export a function.
Remove a couple of unnecessary go:linkname comments on declarations.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/192197
From-SVN: r275239
Ian Lance Taylor [Sat, 31 Aug 2019 02:56:55 +0000 (02:56 +0000)]
compiler: don't report runtime escapes if we've seen errors
If we get errors during compilation, we skip the escape analysis pass.
If we are compiling the runtime package, we report an error if a bound
method expression escapes. The effect is that if we get an error
while compiling the runtime package, we would report confusing and
meaningless errors about bound method expressions escaping.
This CL stops doing that.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/192720
From-SVN: r275238
Ian Lance Taylor [Sat, 31 Aug 2019 02:55:09 +0000 (02:55 +0000)]
runtime: always build panic32.go
Avoids problems with arm64 ILP32 mode. We might want to handle that
mode better in general, but always building panic32.go is simple and
fixes the build.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/192723
From-SVN: r275237
Steven G. Kargl [Sat, 31 Aug 2019 00:32:48 +0000 (00:32 +0000)]
re PR fortran/91587 (ICE in gfc_resolve_filepos, at fortran/io.c:2913)
2019-08-30 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91587
* io.c (match_filepos): MATCH_ERROR should branch to a syntax error.
2019-08-30 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91587
* gfortran.dg/pr91587.f90: New test.
From-SVN: r275236
GCC Administrator [Sat, 31 Aug 2019 00:17:00 +0000 (00:17 +0000)]
Daily bump.
From-SVN: r275235
Jim Wilson [Fri, 30 Aug 2019 23:32:52 +0000 (23:32 +0000)]
RISC-V: Disable -msave-restore for shared libraries.
This was noticed while trying to test -msave-restore support. The
save/restore routines use the alternate return register t0/x5 which is
clobbered by the PLT header, so we can't use them in shared libraries.
This patch disables -msave-restore when -fpic (and -mplt), and emits a
warning if the user explicitly turned on -msave-restore.
gcc/
* config/riscv/riscv.c (riscv_option_override): If -msave-restore
and -fpic and -mplt then disable -msave-restore and warn.
From-SVN: r275231
Ian Lance Taylor [Fri, 30 Aug 2019 21:49:49 +0000 (21:49 +0000)]
compile, runtime: permit anonymous and empty fields in C header
Permit putting structs with anonymous and empty fields in the C header
file runtime.inc that is used to build the C runtime code. This is
required for upcoming 1.13 support, as the m struct has picked up an
anonymous field.
Doing this lets the C header contain all the type descriptor structs,
so start using those in the C code. This cuts the number of copies of
type descriptor definitions from 3 to 2.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/192343
From-SVN: r275227
Jonathan Wakely [Fri, 30 Aug 2019 20:00:28 +0000 (21:00 +0100)]
Fix ChangeLog
From-SVN: r275223
Martin Sebor [Fri, 30 Aug 2019 17:49:17 +0000 (17:49 +0000)]
PR middle-end/91599 - GCC does not say where warning is happening
gcc/ChangeLog:
PR middle-end/91599
* tree-ssa-strlen.c (handle_store): Use a fallback location if
the statement doesn't have one.
* gimple-pretty-print.c (percent_G_format): Same.
gcc/testsuite/ChangeLog:
PR middle-end/91599
* gcc.dg/Wstringop-overflow-16.c: New test.
From-SVN: r275211
Martin Sebor [Fri, 30 Aug 2019 17:42:57 +0000 (17:42 +0000)]
PR middle-end/91584 - Bogus warning from -Warray-bounds during string assignment
gcc/ChangeLog:
PR middle-end/91584
* tree-vrp.c (vrp_prop::check_mem_ref): Normalize type domain bounds
before using them to validate MEM_REF offset.
gcc/testsuite/ChangeLog:
* gfortran.dg/char_array_constructor_4.f90: New test.
From-SVN: r275210
Antony Polukhin [Fri, 30 Aug 2019 16:25:24 +0000 (16:25 +0000)]
Optimize std::to_chars
Bunch of micro optimizations for std::to_chars:
* For base == 8 replacing the lookup in __digits table with arithmetic
computations leads to a same CPU cycles for a loop (exchanges two movzx
with 3 bit ops). However this saves 129 bytes of data and totally avoids
a chance of cache misses on __digits.
* For base == 16 replacing the lookup in __digits table with
arithmetic computations leads to a few additional instructions, but
totally avoids a chance of cache misses on __digits (- ~9 cache misses
for worst case) and saves 513 bytes of const data.
* Replacing __first[pos] and __first[pos - 1] with __first[1] and
__first[0] on final iterations saves ~2% of code size.
* Removing trailing '\0' from arrays of digits allows the linker to
merge the symbols (so that "0123456789abcdefghijklmnopqrstuvwxyz" and
"
0123456789abcdef" could share the same address). This improves data
locality and reduces binary sizes.
* Using __detail::__to_chars_len_2 instead of a generic
__detail::__to_chars_len makes the operation O(1) instead of O(N). It
also makes the code two times shorter.
In sum: this significantly reduces the size of a binary (for about 4KBs
only for base-8 conversion), deals with latency (CPU cache misses)
without changing the iterations count and without adding costly
instructions into the loops.
2019-08-30 Antony Polukhin <antoshkka@gmail.com>
* include/std/charconv (__detail::__to_chars_8)
__detail::__to_chars_16): Replace array of precomputed digits with
arithmetic operations to avoid CPU cache misses. Remove zero
termination from array of digits to allow symbol merge with generic
implementation of __detail::__to_chars. Replace final offsets with
constants. Use __detail::__to_chars_len_2 instead of a generic
__detail::__to_chars_len.
(__detail::__to_chars): Remove zero termination from array of digits.
(__detail::__to_chars_2): Leading digit is always '1'.
From-SVN: r275205
Jonathan Wakely [Fri, 30 Aug 2019 16:25:20 +0000 (17:25 +0100)]
Fix errors in new test
* testsuite/23_containers/vector/cons/89164_c++17.cc: Fix errors.
From-SVN: r275204
Eric Botcazou [Fri, 30 Aug 2019 15:32:51 +0000 (15:32 +0000)]
decl.c (maybe_saturate_size): New function.
* gcc-interface/decl.c (maybe_saturate_size): New function.
(gnat_to_gnu_entity): Invoke it on the Esize of types before sending
it for back-annotations.
* gcc-interface/trans.c: Fix typo.
From-SVN: r275200
Uros Bizjak [Fri, 30 Aug 2019 15:27:10 +0000 (17:27 +0200)]
baseline_symbols.txt: Update.
* config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
From-SVN: r275199
Eric Botcazou [Fri, 30 Aug 2019 15:22:34 +0000 (15:22 +0000)]
ada-tree.h (DECL_FORCED_BY_REF_P): New macro.
* gcc-interface/ada-tree.h (DECL_FORCED_BY_REF_P): New macro.
* gcc-interface/decl.c (gnat_to_gnu_param): Set it on parameters
whose mechanism was forced to by-reference.
* gcc-interface/trans.c (Call_to_gnu): Do not issue a warning about a
misaligned actual parameter if it is based on a CONSTRUCTOR. Remove
obsolete warning for users of Starlet. Issue a warning if a temporary
is make around the call for a parameter with DECL_FORCED_BY_REF_P set.
(addressable_p): Return true for REAL_CST and ADDR_EXPR.
From-SVN: r275198
Eric Botcazou [Fri, 30 Aug 2019 15:15:40 +0000 (15:15 +0000)]
trans.c (gnat_to_gnu): Do not set the location on an expression used for a tag.
* gcc-interface/trans.c (gnat_to_gnu): Do not set the location on an
expression used for a tag.
From-SVN: r275197
Eric Botcazou [Fri, 30 Aug 2019 15:12:20 +0000 (15:12 +0000)]
gigi.h (aggregate_type_contains_array_p): Declare.
* gcc-interface/gigi.h (aggregate_type_contains_array_p): Declare.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: For an
extension, test Has_Record_Rep_Clause instead of Has_Specified_Layout.
(adjust_packed): Return 0 if the type of the field is an aggregate
type that contains (or is) a self-referential array.
(type_has_variable_size): Delete.
* gcc-interface/utils.c (inish_record_type): Constify a variable.
(aggregate_type_contains_array_p): Add parameter SELF_REFERENTIAL.
<RECORD_TYPE>: Pass it in the recursive call.
<ARRAY_TYPE>: If it is true, return true only if the array type is
self-referential.
(create_field_decl): Streamline the setting of the alignment on the
field. Pass false to aggregate_type_contains_array_p.
From-SVN: r275196
Jeff Law [Fri, 30 Aug 2019 15:10:14 +0000 (09:10 -0600)]
* gcc.target/mips/r10k-cache-barrier-9.c: Suppress warnings.
From-SVN: r275195
Eric Botcazou [Fri, 30 Aug 2019 14:48:16 +0000 (14:48 +0000)]
trans.c (lvalue_required_p): Adjust GNU_TYPE in the recursive call.
* gcc-interface/trans.c (lvalue_required_p) <N_Slice>: Adjust GNU_TYPE
in the recursive call.
<N_Selected_Component>: Likewise.
From-SVN: r275191
Eric Botcazou [Fri, 30 Aug 2019 14:44:50 +0000 (14:44 +0000)]
utils.c (build_template): Deal with parameters passed by pointer to component of multi-dimensional arrays.
* gcc-interface/utils.c (build_template): Deal with parameters
passed by pointer to component of multi-dimensional arrays.
From-SVN: r275190
Eric Botcazou [Fri, 30 Aug 2019 14:39:09 +0000 (14:39 +0000)]
decl.c (annotate_value): Inline the call also if List_Representation_Info is greater than 3.
* gcc-interface/decl.c (annotate_value) <CALL_EXPR>: Inline the call
also if List_Representation_Info is greater than 3.
From-SVN: r275188
Eric Botcazou [Fri, 30 Aug 2019 14:26:20 +0000 (14:26 +0000)]
* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Size>: Add assertion.
From-SVN: r275187
Marek Polacek [Fri, 30 Aug 2019 13:55:59 +0000 (13:55 +0000)]
* doc/invoke.texi (-Wvolatile): Use @code for volatile.
From-SVN: r275178