1. 22 Jan, 2019 4 commits
    • MAINTAINERS: add myself. · 8fcc3599
      ChangLog:
      
      2019-01-21  Jiufu Guo  <guojiufu@linux.ibm.com>
      
              * MAINTAINERS (Write After Approval): Add myself.
      
      From-SVN: r268136
      Jiufu Guo committed
    • [RS6000] PR88614, output_operand: invalid %z value · 61ee0966
      The direct cause of this PR is the fact that tls_gdld_nomark didn't
      handle indirect calls.  Also, most indirect calls were being optimised
      back to direct calls anyway, due to tls_gdld_nomark not checking any
      of the parallel elements except the first (plus the extra element that
      distinguishes this call from normal calls).  There were other unwanted
      substitutions too.
      
      So this patch attacks the problem of handling special calls in a
      different way.  Rather than adding another element to the call insn
      parallel to distinguish -mno-tls-markers __tls_get_addr calls from any
      other calls, we now inspect the second CALL arg.  Each
      call_value_nonlocal and call_value_indirect insn now checks for the
      tlsgd/ld unspecs when !TARGET_TLS_MARKERS and emits the arg setup
      insns.  I disallow the local call patterns since we'll only see local
      calls to __tls_get_addr in testcases, and it doesn't seem a good idea
      to complicate the patterns just for a minor optimisation.  Sibling
      call insns aren't used for libcalls, so none of these insns need to
      change.
      
      The patch also fixes a minor problem with -mno-tls-markers
      __tls_get_addr calls causing a "li 3,0" instruction to be emitted
      prior to the arg setup instructions, due to using a libcall with one
      arg.  That isn't correct when the call insn itself sets up its arg.
      Also, I've tidied the V4 secure-plt calls, generating them in
      rs6000_call_sysv rather than by splitting in rs6000.md.  The
      CALL_INSN_FUNCTION_USAGE added in edit_tls_call_insn is no longer
      needed (since git commit 0a4b5c66df9).
      
      On the subject of unwanted substitutions, I also saw a
      _GLOBAL_OFFSET_TABLE_ symbol_ref being substituted for the GOT reg,
      resulting in code like "addi 3,_GLOBAL_OFFSET_TABLE_,tls_ld@got@tlsld".
      Fixed by the unspec_tls change.
      
      	PR target/88614
      	* config/rs6000/predicates.md (unspec_tls): Ensure GOT reg
      	stays a reg.  Allow a const_int.
      	* config/rs6000/rs6000-protos.h (rs6000_output_tlsargs): Declare.
      	* config/rs6000/rs6000.h (IS_V4_FP_ARGS): Define.
      	(IS_NOMARK_TLSGETADDR): Define.
      	* config/rs6000/rs6000.c (edit_tls_call_insn): Delete.
      	(rs6000_output_tlsargs): New function.
      	(rs6000_legitimize_tls_address): Don't say a !TARGET_TLS_MARKERS
      	__tls_get_addr call takes an arg.
      	(rs6000_call_sysv): Generate sysv4 secure plt call pattern here..
      	* config/rs6000/rs6000.md (call_nonlocal_sysv): ..rather than here,
      	delete split..
      	(call_value_nonlocal_sysv): ..or here, delete split.
      	(tls_gdld_nomark): Delete.
      	(call_value_indirect_nonlocal_sysv): Use unspec_tls as operand2
      	predicate.  Call rs6000_output_tlsargs.  Adjust length to suit.
      	(call_value_nonlocal_sysv): Likewise.
      	(call_value_nonlocal_sysv_secure): Likewise.
      	(call_value_nonlocal_aix): Likewise.
      	(call_value_indirect_aix): Likewise.
      	(call_value_indirect_elfv2): Likewise.
      	(call_value_local32, call_value_local64): Disable for no-mark tls.
      	(call_value_local_aix): Likewise.
      
      From-SVN: r268135
      Alan Modra committed
    • Daily bump. · 106fc1fc
      From-SVN: r268134
      GCC Administrator committed
    • re PR go/88927 (Bootstrap failure on arm in libgo starting with r268084) · 3d338229
      	PR go/88927
          runtime, internal/cpu: fix build for ARM GNU/Linux
          
          Was failing with
          
          ../../../libgo/go/internal/cpu/cpu.go:138:2: error: reference to undefined name 'doinit'
            138 |  doinit()
                |  ^
          
          Fix it by adding in Go 1.12 internal/cpu/cpu_arm.go, and the code in
          runtime that initializes the values.
          
          Fixes https://gcc.gnu.org/PR88927.
          
          Reviewed-on: https://go-review.googlesource.com/c/158717
      
      From-SVN: r268131
      Ian Lance Taylor committed
  2. 21 Jan, 2019 19 commits
    • libgo: fix building, and some testing, on Solaris · ea31c98d
          
          Restore some of the fixes that were applied to golang_org/x/net/lif
          but were lost when 1.12 moved the directory to internal/x/net/lif.
          
          Add support for reading /proc to fetch argc/argv/env for c-archive mode.
          
          Reviewed-on: https://go-review.googlesource.com/c/158640
      
      From-SVN: r268130
      Ian Lance Taylor committed
    • compiler: stop iterator on error · a9647bf9
          
          If there is an error reading or parsing an archive header, the
          Archive_iterator code would return a dummy header but would not mark
          itself as done.  The effect is that an invalid archive leads to an
          endless loop reading and re-reading the same archive header.  Avoid
          that by setting the offset to the end of the file, which will cause
          the iterator to == archive_end.
          
          No test since it doesn't seem worth constructing an invalid archive.
          
          Reviewed-on: https://go-review.googlesource.com/c/158217
      
      From-SVN: r268129
      Ian Lance Taylor committed
    • re PR c++/88949 (ICE in expand_expr_real_1, at expr.c:10001 with -fopenmp) · 44f4e418
      	PR c++/88949
      	* optimize.c (cxx_copy_decl): New function.
      	(clone_body): Use it instead of copy_decl_no_change.
      
      	* g++.dg/gomp/pr88949.C: New test.
      
      From-SVN: r268127
      Jakub Jelinek committed
    • 2019-01-21 Dominique d'Humieres <dominiq@gcc.gnu.org> · 2f86f1f8
      	* Fix a typo in the previous commit.
      
      From-SVN: r268126
      Dominique d'Humieres committed
    • class_66.f90: Fix a dg directive. · 4d851658
      2019-01-21  Manfred Schwarb  <manfred99@gmx.ch>
      
      	* class_66.f90: Fix a dg directive.
      	* debug/pr35154-stabs.f: Likewise.
      	* dec_d_lines_3.f: Likewise.
      	* dec_d_lines_3.f: Likewise.
      	* dec_structure_12.f90: Likewise.
      	* dec_structure_15.f90: Likewise.
      	* deferred_character_31.f90: Likewise.
      	* dtio_31.f03: Likewise.
      	* dtio_32.f03: Likewise.
      	* extends_11.f03: Likewise.
      	* integer_plus.f90: Likewise.
      	* pdt_25.f03: Likewise.
      	* pr58968.f: Likewise.
      	* pr78259.f90: Likewise.
      	* vect/vect-2.f90: Likewise.
      	* matmul_const.f90: Likewise.
      
      From-SVN: r268125
      Manfred Schwarb committed
    • Merge dmd upstream 180465274 · 255b2d91
      Reduces the memory footprint of the CTFE interpreter by replacing new
      with emplacement new in many places.
      
      gcc/d/ChangeLog:
      
      2019-01-21  Iain Buclaw  <ibuclaw@gdcproject.org>
      
      	* d-frontend.cc (Compiler::paintAsType): Update for new signature.
      
      From-SVN: r268124
      Iain Buclaw committed
    • re PR target/88938 (ICE in extract_insn, at recog.c:2304) · d5011496
      	PR target/88938
      	* config/i386/i386.c (ix86_expand_builtin) [case IX86_BUILTIN_BEXTRI32,
      	case IX86_BUILTIN_BEXTRI64]: Sanitize operands.
      
      testsuite/ChangeLog:
      
      	PR target/88938
      	* gcc.target/i386/pr88938.c: New test.
      
      From-SVN: r268123
      Uros Bizjak committed
    • re PR sanitizer/88901 (ICE when using -fsanitize=pointer-compare) · 52e67970
      	PR sanitizer/88901
      	* typeck.c (cp_build_binary_op): Don't instrument
      	SANITIZE_POINTER_COMPARE if processing_template_decl.
      	(pointer_diff): Similarly for SANITIZE_POINTER_SUBTRACT.
      
      	* g++.dg/asan/pr88901.C: New test.
      
      From-SVN: r268122
      Jakub Jelinek committed
    • hash-map-tests.c (test_map_of_strings_to_int): Show how to use string contents as hash_map keys. · 3b1f091c
      	* hash-map-tests.c (test_map_of_strings_to_int): Show how to use
      	string contents as hash_map keys.
      
      From-SVN: r268121
      Michael Ploujnikov committed
    • AArch64: Fix big-endian and ILP32 fail for simd-clone test. · 9011fa06
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/vect/simd-clone-7.cc: Fix assembler scan.
      
      --This line, a d those below, will be ignored--
      
      M    gcc/testsuite/ChangeLog
      M    gcc/testsuite/g++.dg/vect/simd-clone-7.cc
      
      From-SVN: r268120
      Tamar Christina committed
    • Makefile.am (noinst_LTLIBRARIES): Rename libzgcj_convience.la to libz_convenience.la. · ad81a900
      2019-01-21  Iain Buclaw  <ibuclaw@gdcproject.org>
      
      	* Makefile.am (noinst_LTLIBRARIES): Rename libzgcj_convience.la to
      	libz_convenience.la.
      	* Makefile.in: Regenerate.
      	* configure.ac: Remove target_all.
      	* configure: Regenerate.
      
      From-SVN: r268119
      Iain Buclaw committed
    • re PR c/88928 (ICE segfault in check_address_or_pointer_of_packed_member since r268075) · f3a18a5c
      2019-01-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              PR c/88928
              * c-warn.c (check_alignment_of_packed_member): Add a boolean parameter
              for rvalue context.  Handle rvalues correctly.  Use min_align_of_type
              instead of TYPE_ALIGN.
              (check_address_or_pointer_of_packed_member): Handle rvalues coorrectly.
              Use min_align_of_type instead of TYPE_ALIGN_UNIT.  Check for NULL
              pointer from TYPE_STUB_DECL.
      
      testsuite:
      2019-01-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              PR c/88928
              * c-c++-common/Waddress-of-packed-member-1.c: New test case.
              * gcc.dg/pr88928.c: New test case.
      
      From-SVN: r268118
      Bernd Edlinger committed
    • utf-array.c: Allow wchar_t to be printed as {long ,short ,}{unsigned ,}int. · 0fba41e0
      	* gcc.dg/utf-array.c: Allow wchar_t to be printed as
      	{long ,short ,}{unsigned ,}int.
      
      From-SVN: r268117
      Jakub Jelinek committed
    • Fix leak in splay-tree · 2197ea17
      Philippe Waroquiers noticed a memory leak in gdb, which he tracked
      down to a bug in splay-tree.  splay_tree_remove does not call the
      `delete_key' function when it removes the old node; but it should.
      
      I looked at every splay tree in GCC and there is only one that passes
      a non-NULL delete function -- the one in lto.c.  That file does not
      call splay_tree_remove.  So, I think this is safe to check in.
      
      I re-ran the LTO tests to double check.
      
      libiberty/
      	* splay-tree.c (splay_tree_remove): Delete the key if necessary.
      
      From-SVN: r268116
      Tom Tromey committed
    • re PR tree-optimization/88934 (ICE: verify_gimple failed (Error: mismatching… · c73e7656
      re PR tree-optimization/88934 (ICE: verify_gimple failed (Error: mismatching comparison operand types))
      
      2019-01-21  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/88934
      	* tree-vect-slp.c (vect_mask_constant_operand_p): Always look
      	at the possibly non-constant operand.
      	(vect_get_constant_vectors): Adjust.
      
      	* gfortran.dg/pr88934.f90: New testcase.
      
      From-SVN: r268115
      Richard Biener committed
    • i386: Move Intel intrinsics head files to <immintrin.h> · 6c0d746f
      According to Intel Intrinsics Guide:
      
      https://software.intel.com/sites/landingpage/IntrinsicsGuide/
      
      Intel intrinsics should be available by including <immintrin.h>.  This
      patch moves remaining Intel intrinsics head files from <x86intrin.h> to
      <immintrin.h>.
      
      	PR target/71659
      	* config/i386/adxintrin.h: Just check _IMMINTRIN_H_INCLUDED.
      	* config/i386/clflushoptintrin.h: Check _IMMINTRIN_H_INCLUDED
      	instead of _X86INTRIN_H_INCLUDED.
      	* onfig/i386/clwbintrin.h: Likewise.
      	* config/i386/pkuintrin.h: Likewise.
      	* config/i386/prfchwintrin.h: Likewise.
      	* config/i386/rdseedintrin.h: Likewise.
      	* config/i386/wbnoinvdintrin.h: Likewise.
      	* config/i386/xsavecintrin.h: Likewise.
      	* config/i386/xsavesintrin.h: Likewise.
      	* config/i386/fxsrintrin.h: Enable _IMMINTRIN_H_INCLUDED check.
      	* config/i386/xsaveintrin.h: Likewise.
      	* config/i386/xsaveoptintrin.h: Likewise.
      	* config/i386/x86intrin.h: Move "#include" <rdseedintrin.h>,
      	<prfchwintrin.h>, <fxsrintrin.h>, <xsaveintrin.h>,
      	<xsaveoptintrin.h>, <adxintrin.h>, <clwbintrin.h>,
      	<clflushoptintrin.h>, <xsavesintrin.h>, <xsavecintrin.h>,
      	<wbnoinvdintrin.h> and <pkuintrin.h> to ...
      	* config/i386/immintrin.h: Here.
      
      From-SVN: r268113
      H.J. Lu committed
    • re PR ipa/86590 (Codegen is poor when passing std::string by value with… · 8f10fb50
      re PR ipa/86590 (Codegen is poor when passing std::string by value with _GLIBCXX_EXTERN_TEMPLATE undefined)
      
      	PR libstdc++/86590
      	* include/bits/char_traits.h (__constant_string_p,
      	__constant_char_array_p): Use __builtin_is_constant_evaluated if
      	available.
      
      From-SVN: r268112
      Jakub Jelinek committed
    • Fix after P0600. · d715f554
      gcc/testsuite/ChangeLog
      2019-02-20  Ulrich Drepper  <drepper@redhat.com>
      
      	Fix after P0600.
      	* g++.dg/init/new39.C: Don't just ignore result of new.
      
      libstdc++/ChangeLog
      2019-02-20  Ulrich Drepper  <drepper@redhat.com>
      
      	Implement C++20 P0600r1.
      	* include/backward/hash_map: Add nodiscard attribute to empty.
      	* include/backward/hash_set: Likewise.
      	* backward/hashtable.h: Likewise.
      	* include/bits/basic_string.h: Likewise.
      	* include/bits/forward_list.h: Likewise.
      	* include/bits/hashtable.h: Likewise.
      	* include/bits/regex.h: Likewise.
      	* include/bits/stl_deque.h: Likewise.
      	* include/bits/stl_list.h: Likewise.
      	* include/bits/stl_map.h: Likewise.
      	* include/bits/stl_multimap.h: Likewise.
      	* include/bits/stl_multiset.h: Likewise.
      	* include/bits/stl_queue.h: Likewise.
      	* include/bits/stl_set.h: Likewise.
      	* include/bits/stl_stack.h: Likewise.
      	* include/bits/stl_tree.h: Likewise.
      	* include/bits/stl_vector.h: Likewise.
      	* include/bits/unordered_map.h: Likewise.
      	* include/bits/unordered_set.h: Likewise.
      	* include/debug/array: Likewise.
      	* include/experimental/any: Likewise.
      	* include/experimental/bits/fs_path.h: Likewise.
      	* include/experimental/internet: Likewise.
      	* include/experimental/string_view: Likewise.
      	* include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp:
      	Likewise.
      	* include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp:
      	Likewise.
      	* include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp:
      	Likewise.
      	* include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp:
      	Likewise.
      	* include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp:
      	Likewise.
      	* include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp:
      	Likewise.
      	* include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp:
      	Likewise.
      	* include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp:
      	Likewise.
      	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp:
      	Likewise.
      	*
      include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp:
      	Likewise.
      	* include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp:
      	Likewise.
      	* include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp:
      	Likewise.
      	* include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp:
      	Likewise.
      	* include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hp:
      	Likewise.
      	* include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp:
      	Likewise.
      	* include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp:
      	Likewise.
      	* include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp:
      	Likewise.
      	* include/ext/pb_ds/detail/tree_trace_base.hpp: Likewise.
      	* include/ext/pb_ds/trie_policy.hpp: Likewise.
      	* include/ext/rope: Likewise.
      	* include/ext/slist: Likewise.
      	* include/ext/vstring.h: Likewise.
      	* include/profile/array: Likewise.
      	* include/std/array: Likewise.
      	* include/tr1/array: Likewise.
      	* include/tr1/hashtable.h: Likewise.
      	* include/tr1/regex: Likewise.
      	* include/tr2/dynamic_bitset: Likewise.
      	* include/bits/alloc_traits.h: Add nodiscard attribute to
      	allocate.
      	* include/experimental/memory_resource: Likewise.
      	* include/ext/alloc_traits.h: Likewise.
      	* include/ext/array_allocator.h: Likewise.
      	* include/ext/bitmap_allocator.h: Likewise.
      	* include/ext/debug_allocator.h: Likewise.
      	* include/ext/extptr_allocator.h: Likewise.
      	* include/ext/mt_allocator.h: Likewise.
      	* include/ext/new_allocator.h: Likewise.
      	* include/ext/pool_allocator.h: Likewise.
      	* include/ext/throw_allocator.h: Likewise.
      	* include/std/scoped_allocator: Likewise.
      	* libsupc++/eh_alloc.cc: Likewise.
      	* include/std/future: Add nodiscard attribute to async.
      	* libsupc++/new: Add nodiscard attribute to new.
      
      From-SVN: r268111
      Ulrich Drepper committed
    • Daily bump. · 91f1f6cd
      From-SVN: r268110
      GCC Administrator committed
  3. 20 Jan, 2019 7 commits
    • Limit AA walking in IPA summary generation · c628d1c3
      2019-01-20  Martin Jambor  <mjambor@suse.cz>
      
      	PR ipa/87615
      	* ipa-prop.h (struct ipa_func_body_info): Replaced field aa_walked
      	with aa_walk_budget.
      	* cgraph.h (ipa_polymorphic_call_context::get_dynamic_type): Add
      	aa_walk_budget_p parameter.
      	* ipa-fnsummary.c (unmodified_parm_1): New parameter fbi.  Limit AA
      	walk.  Updated all callers.
      	(unmodified_parm): New parameter fbi, pass it to unmodified_parm_1.
      	(eliminated_by_inlining_prob): New parameter fbi, pass it on to
      	unmodified_parm.
      	(will_be_nonconstant_expr_predicate): New parameter fbi, removed
      	parameter info.  Extract info from fbi.  Pass fbi to recursive calls
      	and to unmodified_parm.
      	(phi_result_unknown_predicate): New parameter fbi, removed parameter
      	info, updated call to will_be_nonconstant_expr_predicate.
      	(param_change_prob): New parameter fbi, limit AA walking.
      	(analyze_function_body): Initialize aa_walk_budget in fbi.  Update
      	calls to various above functions.
      	* ipa-polymorphic-call.c (get_dynamic_type): Add aa_walk_budget_p
      	parameter.  Use it to limit AA walking.
      	* ipa-prop.c (detect_type_change_from_memory_writes): New parameter
      	fbi, limit AA walk.
      	(detect_type_change): New parameter fbi, pass it on to
      	detect_type_change_from_memory_writes.
      	(detect_type_change_ssa): Likewise.
      	(aa_overwalked): Removed.
      	(parm_preserved_before_stmt_p): Assume fbi is never NULL, stream line
      	accordingly, adjust to the neew AA limiting scheme.
      	(parm_ref_data_preserved_p): Likewise.
      	(ipa_compute_jump_functions_for_edge): Adjust call to
      	get_dynamic_type.
      	(ipa_analyze_call_uses): Likewise.
      	(ipa_analyze_virtual_call_uses): Pass fbi to detect_type_change_ssa.
      	(ipa_analyze_node): Initialize aa_walk_budget.
      	(ipcp_transform_function): Likewise.
      	* tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt): Update call
      	to get_dynamic_type.
      
      From-SVN: r268107
      Martin Jambor committed
    • [D] Don't predefine GNU_StackGrowsDown on every target. · 49686677
      Every back-end defines STACK_GROWS_DOWNWARD, the condition should
      instead be  checking whether it was defined as 1 or 0.
      
      gcc/d/ChangeLog:
      
      2019-01-20  Iain Buclaw  <ibuclaw@gdcproject.org>
      
      	* d-builtins.cc (d_init_versions): Check value of
      	STACK_GROWS_DOWNWARD.
      
      From-SVN: r268106
      Iain Buclaw committed
    • [D] Fix identity comparison for structs with complex float fields. · 5bdebb51
      gcc/d/ChangeLog:
      
      2019-01-20  Iain Buclaw  <ibuclaw@gdcproject.org>
      
      	* d-codegen.cc (identity_compare_p): Return false if seen built-in
      	type with padding.
      	(build_float_identity): Moved here from expr.cc.
      	(lower_struct_comparison): Handle real and complex types.
      	* d-tree.h (build_float_identity): New.
      	* expr.cc (build_float_identity): Move to d-codegen.cc.
      
      gcc/testsuite/ChangeLog:
      
      2019-01-20  Iain Buclaw  <ibuclaw@gdcproject.org>
      
      	* gdc.dg/runnable.d: Add more tests for comparing complex types.
      
      From-SVN: r268104
      Iain Buclaw committed
    • [D] Fix IdentityExp comparison for complex floats. · 70d87497
      gcc/d/ChangeLog:
      
      2019-01-20  Johannes Pfau  <johannespfau@gmail.com>
      
      	* expr.cc (build_float_identity): New function.
      	(ExprVisitor::visit(IdentityExp)): Add support for complex types.
      
      gcc/testsuite/ChangeLog:
      
      2019-01-20  Johannes Pfau  <johannespfau@gmail.com>
      
      	* gdc.dg/runnable.d: Add tests for comparing complex types.
      
      From-SVN: r268103
      Johannes Pfau committed
    • vector long long and vector double require vsx support. · a766ecb0
      gcc/testsuite/ChangeLog
      
          * gcc.target/powerpc/altivec_vld_vst_addr.c: Remove, split into 
          altivec_vld_vst_addr-1.c and altivec_vld_vst_addr-2.c.
          * gcc.target/powerpc/altivec_vld_vst_addr-1.c: New test.
          * gcc.target/powerpc/altivec_vld_vst_addr-2.c: Ditto.
      
      From-SVN: r268102
      Kewen Lin committed
    • Daily bump. · c72473e4
      From-SVN: r268101
      GCC Administrator committed
  4. 19 Jan, 2019 9 commits
    • [multiple changes] · b4e17cad
      2019-01-19  Dominique d'Humieres  <dominiq@gcc.gnu.org>
      
      	PR fortran/37835
      	* resolve.c (resolve_types): Add !flag_automatic.
      	* symbol.c (gfc_add_save): Silence warnings.
      
      2019-01-18  Dominique d'Humieres  <dominiq@gcc.gnu.org>
      
      	PR fortran/37835
      	* gfortran.dg/no-automatic.f90: New test.
      
      From-SVN: r268098
      Dominique d'Humieres committed
    • re PR fortran/77960 (ICE in gfc_conv_ss_startstride, at fortran/trans-array.c:3966) · 5131b898
      2019-01-19  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/77960
      	* io.c (match_io_element): input-item cannot be an external function.
       
      2019-01-19  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/77960
      	* gfortran.dg/pr77960.f90: New test.
      
      From-SVN: r268097
      Steven G. Kargl committed
    • re PR fortran/56789 (Handling of contiguous dummy arguments) · 8558af50
      2018-01-19  Thomas Koenig  <tkoenig@gcc.gnu.org>
      	Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/56789
      	* trans-expr.c (gfc_conv_procedure_call): Call
      	gfc_conv_subref_array_arg if the formal arg is contiguous
      	and the actual arg may not be.
      
      2018-01-19  Thomas Koenig  <tkoenig@gcc.gnu.org>
      	Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/56789
      	* gfortran.dg/contiguous_3.f90: Make code compilant.  Remove
      	scan-tree tests that fail with patch.
      	* gfortran.dg/contiguous_8.f90: New test.
      
      
      Co-Authored-By: Paul Thomas <pault@gcc.gnu.org>
      
      From-SVN: r268096
      Thomas Koenig committed
    • aarch64.c (aarch64_stack_protect_guard): Move outside of #if CHECKING_P code. · e76c8e56
      	* config/aarch64/aarch64.c (aarch64_stack_protect_guard): Move
      	outside of #if CHECKING_P code.
      
      From-SVN: r268095
      Jakub Jelinek committed
    • Claw back some of the code size regression in 548.exchange2_r · e047844b
      This patch tries harder to detect cases in which the inner dimension
      of an array access is invariant, such as:
      
           x(i, :) = 100
      
      It fixes some of the code size regression in 548.exchange2_r, with
      size improving by 5% compared to before the patch.  Of the two other
      SPEC 2017 tests affected by loop versioning, 554.roms_r improved by a
      trivial amount (0.3%) and 549.fotonik3d_r didn't change.  All three
      results are with -Ofast -flto.
      
      2019-01-19  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* gimple-loop-versioning.cc (loop_versioning::dump_inner_likelihood):
      	New function, split out from...
      	(loop_versioning::analyze_stride): ...here.
      	(loop_versioning::find_per_loop_multiplication): Use gassign.
      	(loop_versioning::analyze_term_using_scevs): Return a success code.
      	(loop_versioning::analyze_arbitrary_term): New function.
      	(loop_versioning::analyze_address_fragment): Use
      	analyze_arbitrary_term if all else fails.
      
      gcc/testsuite/
      	* gfortran.dg/loop_versioning_1.f90: Bump the number of identified
      	inner strides.
      	* gfortran.dg/loop_versioning_9.f90: New test.
      	* gfortran.dg/loop_versioning_10.f90: Likewise.
      
      From-SVN: r268093
      Richard Sandiford committed
    • re PR fortran/88871 (ICE segmentation fault in f951) · b9e25708
      2019-01-17  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/88871
      	* resolve.c (resolve_ref): Fix logic for removal of
      	reference.
      
      From-SVN: r268092
      Thomas Koenig committed
    • re PR fortran/88902 (ICE: Segmentation fault (in DFS::DFS_write_tree_body)) · 152f258f
      	PR fortran/88902
      	* trans-decl.c (gfc_get_symbol_decl): Don't add length to function
      	or parent function if it has been added there already.
      
      	* gfortran.dg/pr88902.f90: New test.
      
      From-SVN: r268091
      Jakub Jelinek committed
    • attr-nonstring-3.c: Remove an xfail. · 1f7c5604
      gcc/testsuite/ChangeLog:
      
      	* c-c++-common/attr-nonstring-3.c: Remove an xfail.
      
      From-SVN: r268090
      Martin Sebor committed
    • Daily bump. · 03795aa0
      From-SVN: r268089
      GCC Administrator committed
  5. 18 Jan, 2019 1 commit
    • PR libstdc++/88782 avoid ODR problems in std::make_shared · fb54aa59
      The old version of _Sp_counted_ptr_inplace::_M_get_deleter (up to GCC
      8.2.0) expects to be passed a real std::typeinfo object, so mixing that
      with the new definition of the __shared_ptr constructor (which always
      passes the fake tag) leads to accessing the fake object as a real
      std::typeinfo. Instead of trying to make it safe to mix the old and new
      definitions, just stop using that function. By passing a reference to
      __shared_ptr::_M_ptr to the __shared_count constructor it can be set
      directly, without needing to obtain the pointer via the _M_get_deleter
      back-channel. This avoids a virtual dispatch (which fixes PR 87514).
      
      This means that code built against new libstdc++ headers doesn't use
      _M_get_deleter at all, and so make_shared works the same whether RTTI is
      enabled or not.
      
      Also change _M_get_deleter so that it checks for a real type_info object
      even when RTTI is disabled, by calling a library function. Unless
      libstdc++ itself is built without RTTI that library function will be
      able to test if it's the right type_info. This means the new definition
      of _M_get_deleter can handle both the fake type_info tag and a real
      type_info object, even if built without RTTI.
      
      If linking to objects built against older versions of libstdc++ then if
      all objects use -frtti or all use -fno-rtti, then the caller of
      _M_get_deleter and the definition of _M_get_deleter will be consistent
      and it will work. If mixing -frtti with -fno-rtti it can still fail if
      the linker picks an old definition of _M_get_deleter and an old
      __shared_ptr constructor that are incompatible. In that some or all
      objects might need to be recompiled.
      
      	PR libstdc++/87514
      	PR libstdc++/87520
      	PR libstdc++/88782
      	* config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export new symbol.
      	* include/bits/shared_ptr.h
      	(shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...))
      	(allocate_shared): Change to use new tag type.
      	* include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_eq):
      	Declare new member function.
      	(_Sp_alloc_shared_tag): Define new type.
      	(_Sp_counted_ptr_inplace): Declare __shared_count<_Lp> as a friend.
      	(_Sp_counted_ptr_inplace::_M_get_deleter) [!__cpp_rtti]: Use
      	_Sp_make_shared_tag::_S_eq to check type_info.
      	(__shared_count(Ptr, Deleter),__shared_count(Ptr, Deleter, Alloc)):
      	Constrain to prevent being called with _Sp_alloc_shared_tag.
      	(__shared_count(_Sp_make_shared_tag, const _Alloc&, Args&&...)):
      	Replace constructor with ...
      	(__shared_count(Tp*&, _Sp_alloc_shared_tag<_Alloc>, Args&&...)): Use
      	reference parameter so address of the new object can be returned to
      	the caller. Obtain the allocator from the tag type.
      	(__shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...)): Replace
      	constructor with ...
      	(__shared_ptr(_Sp_alloc_shared_tag<Alloc>, Args&&...)): Pass _M_ptr
      	to the __shared_count constructor.
      	(__allocate_shared): Change to use new tag type.
      	* src/c++11/shared_ptr.cc (_Sp_make_shared_tag::_S_eq): Define.
      
      From-SVN: r268086
      Jonathan Wakely committed