1. 01 Sep, 2019 8 commits
    • target-supports.exp (check_effective_target_pthread): Add #include <pthread.h>… · 4c122404
      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 committed
    • re PR target/91472 (gmp testsuite segfaults with gcc-8 and gcc-9, works fine with gcc-7) · 2dae2123
      	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
      Eric Botcazou committed
    • array.c (spec_dimen_size): Check for the presence of expressions for the bounds. · 70570ec1
      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
      Paul Thomas committed
    • policy_data_structures_biblio.xml (COM: Component Model Object Technologies): Adjust name and link. · 3e7254c5
      	* doc/xml/manual/policy_data_structures_biblio.xml (COM: Component
      	Model Object Technologies): Adjust name and link.
      
      From-SVN: r275268
      Gerald Pfeifer committed
    • re PR middle-end/91623 (-msse4.1 -O3 segfault in… · 9151048d
      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 committed
    • re PR lto/91572 (lto1: error: type variant has different ‘TREE_TYPE’ since r269862) · d1e2e50a
      	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
      Jakub Jelinek committed
    • Fix wrong dates in ChangeLog · 12b19f6a
      From-SVN: r275265
      Bernd Edlinger committed
    • Daily bump. · 7a9f7e59
      From-SVN: r275264
      GCC Administrator committed
  2. 31 Aug, 2019 10 commits
  3. 30 Aug, 2019 22 commits
    • RISC-V: Disable -msave-restore for shared libraries. · a169f358
      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
      Jim Wilson committed
    • compile, runtime: permit anonymous and empty fields in C header · 4a140826
          
          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
      Ian Lance Taylor committed
    • Fix ChangeLog · aff0632d
      From-SVN: r275223
      Jonathan Wakely committed
    • PR middle-end/91599 - GCC does not say where warning is happening · 648af168
      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 committed
    • PR middle-end/91584 - Bogus warning from -Warray-bounds during string assignment · 5d69df7e
      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
      Martin Sebor committed
    • Optimize std::to_chars · 7259a9d5
      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
      Antony Polukhin committed
    • Fix errors in new test · 1ecaf589
      	* testsuite/23_containers/vector/cons/89164_c++17.cc: Fix errors.
      
      From-SVN: r275204
      Jonathan Wakely committed
    • decl.c (maybe_saturate_size): New function. · 875bdbe2
      	* 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
      Eric Botcazou committed
    • baseline_symbols.txt: Update. · f76cf133
      	* config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
      
      From-SVN: r275199
      Uros Bizjak committed
    • ada-tree.h (DECL_FORCED_BY_REF_P): New macro. · 1edbeb15
      	* 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 committed
    • trans.c (gnat_to_gnu): Do not set the location on an expression used for a tag. · 5e017b1e
      	* gcc-interface/trans.c (gnat_to_gnu): Do not set the location on an
      	expression used for a tag.
      
      From-SVN: r275197
      Eric Botcazou committed
    • gigi.h (aggregate_type_contains_array_p): Declare. · 0c2837b5
      	* 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
      Eric Botcazou committed
    • * gcc.target/mips/r10k-cache-barrier-9.c: Suppress warnings. · c85dbadc
      From-SVN: r275195
      Jeff Law committed
    • trans.c (lvalue_required_p): Adjust GNU_TYPE in the recursive call. · 7f6dd102
      	* 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 committed
    • utils.c (build_template): Deal with parameters passed by pointer to component of… · e5969b73
      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 committed
    • decl.c (annotate_value): Inline the call also if List_Representation_Info is greater than 3. · 37cf9302
      	* 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 committed
    • * doc/invoke.texi (-Wvolatile): Use @code for volatile. · 81e753d9
      From-SVN: r275178
      Marek Polacek committed
    • PR libstdc++/89164 enforce constraints for uninitialized algos · 61f5cb23
      The memmove optimizations for std::uninitialized_copy/fill/_n will
      compile even if the type is not copy constructible, because std::copy
      doesn't require copy construction to work. But the uninitialized
      algorithms do require it.
      
      This adds explicit static assertions to ensure we don't allow ill-formed
      initializations.
      
      	PR libstdc++/89164
      	* include/bits/stl_algobase.h (__copy_move): Give descriptive names
      	to template parameters.
      	* include/bits/stl_uninitialized.h (uninitialized_copy)
      	(uninitialized_fill, uninitialized_fill_n): Add static assertions to
      	diagnose invalid uses.
      	* testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc:
      	Adjust expected error.
      	* testsuite/20_util/specialized_algorithms/uninitialized_copy/89164.cc:
      	New test.
      	* testsuite/20_util/specialized_algorithms/uninitialized_copy_n/
      	89164.cc: New test.
      	* testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc:
      	New test.
      	* testsuite/20_util/specialized_algorithms/uninitialized_fill_n/
      	89164.cc: New test.
      	* testsuite/23_containers/vector/cons/89164.cc: New test.
      	* testsuite/23_containers/vector/cons/89164_c++17.cc: New test.
      
      From-SVN: r275177
      Jonathan Wakely committed
    • gigi.h (gigi_checking_assert): New macro. · 815b5368
      	* gcc-interface/gigi.h (gigi_checking_assert): New macro.
      	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Modular_Integer_Type>:
      	Remove redundant test and adjust comments.  Minor tweaks.
      	* gcc-interface/trans.c (Call_to_gnu): Do not generate range checks,
      	instead assert that the Do_Range_Check flag is not set.  Adjust call
      	to convert_with_check.
      	(gnat_to_gnu): Likewise.
      	(assoc_to_constructor): Likewise.
      	(pos_to_constructor): Likewise.  Remove GNAT_COMPONENT_TYPE parameter.
      	(emit_range_check): Delete.
      	(convert_with_check): Remove RANGE_P parameter and adjust.  Do a single
      	overflow check for modular types.
      
      From-SVN: r275174
      Eric Botcazou committed
    • arm.md (unaligned_loaddi, [...]): New unspec insn patterns. · 3eefaaa9
      2019-08-30  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * config/arm/arm.md (unaligned_loaddi,
              unaligned_storedi): New unspec insn patterns.
              * config/arm/neon.md (unaligned_storev8qi): Likewise.
              * config/arm/arm.c (gen_cpymem_ldrd_strd): Use unaligned_loaddi
              and unaligned_storedi for 4-byte aligned memory.
              (arm_block_set_aligned_vect): Use unaligned_storev8qi for
              4-byte aligned memory.
      
      From-SVN: r275063
      Bernd Edlinger committed
    • [PR 91579] Avoid creating redundant PHI nodes in tail-call pass · bb4d170d
      2019-08-30  Martin Jambor  <mjambor@suse.cz>
      
      	tree-optimization/91579
      	* tree-tailcall.c (tailr_arg_needs_copy): New variable.
      	(find_tail_calls): Allocate tailr_arg_needs_copy and set its bits as
      	appropriate.
      	(arg_needs_copy_p): Removed.
      	(eliminate_tail_call): Test tailr_arg_needs_copy instead of calling
      	arg_needs_copy_p.
      	(tree_optimize_tail_calls_1): Likewise.  Free tailr_arg_needs_copy.
      
      	testsuite/
      	* gcc.dg/tree-ssa/pr91579.c: New test.
      
      From-SVN: r275062
      Martin Jambor committed