1. 21 Aug, 2017 4 commits
    • Fix bogus CONST_WIDE_INT hash · 38fbc003
      The CONST_WIDE_INT case in const_rtx_hash_1 started the hash
      with the precision of the mode, but the mode is always VOIDmode.
      
      2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* varasm.c (const_rtx_hash_1): Don't hash in the mode of a
      	CONST_WIDE_INT.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r251218
      Richard Sandiford committed
    • re PR tree-optimization/81884 (Invalid code generation with zero size arrays or… · 8322b607
      re PR tree-optimization/81884 (Invalid code generation with zero size arrays or flexible array members)
      
      2017-08-21  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/81884
      	* tree-ssa-alias.c (stmt_kills_ref_p): Handle array accesses
      	at struct end conservatively when comparing common bases.
      
      	* g++.dg/torture/pr81884.C: New testcase.
      
      From-SVN: r251217
      Richard Biener committed
    • tree-ssa-loop-im.c (struct lim_aux_data): Add ref index member. · 5164293a
      2017-08-21  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-loop-im.c (struct lim_aux_data): Add ref index member.
      	(mem_ref_in_stmt): Remove.
      	(determine_max_movement): Use ref index to get at the reference.
      	(invariantness_dom_walker::before_dom_children): Deal with
      	lim data already initialized.
      	(gather_mem_refs_stmt): Initialize lim data and record ref index.
      
      From-SVN: r251216
      Richard Biener committed
    • Daily bump. · 8bd81a41
      From-SVN: r251215
      GCC Administrator committed
  2. 20 Aug, 2017 5 commits
  3. 19 Aug, 2017 3 commits
  4. 18 Aug, 2017 12 commits
    • jit: fix segfault with autovectorization (PR tree-optimization/46805) · 953e520d
      libgccjit ran into its own version of PR tree-optimization/46805 (seen
      with the Go frontend); this patch fixes it in the same way.
      
      gcc/jit/ChangeLog:
      	PR tree-optimization/46805
      	* dummy-frontend.c (jit_langhook_parse_file): Handle vector types.
      
      gcc/testsuite/ChangeLog:
      	PR tree-optimization/46805
      	* jit.dg/all-non-failing-tests.h: Add test-autovectorize.c.
      	* jit.dg/test-autovectorize.c: New test case.
      
      From-SVN: r251192
      David Malcolm committed
    • jit: make simpler reproducers · 519d0798
      The C reproducers generated by gcc_jit_context_dump_reproducer_to_file
      contain numerous pointer values (from %p) to ensure uniqueness of the
      identifiers, but this makes them less readable than they could be.
      
      This patch updates reproducer::make_identifier so that the pointer
      is only added if it's necessary for uniqueness.
      
      gcc/jit/ChangeLog:
      	* jit-recording.c (class gcc::jit::reproducer): Rename field
      	"m_identifiers" to "m_map_memento_to_identifier".  Add field
      	"m_set_identifiers" and struct hash_traits for it.
      	(gcc::jit::reproducer::reproducer): Update for above.
      	(convert_to_identifier): New function.
      	(gcc::jit::reproducer::ensure_identifier_is_unique): New method.
      	(gcc::jit::reproducer::make_identifier): Avoid appending the %p
      	unless necessary for uniqueness.  Update for field renaming.
      	(gcc::jit::reproducer::get_identifier): Update for field renaming.
      
      From-SVN: r251191
      David Malcolm committed
    • re PR target/80210 (ICE in in extract_insn, at recog.c:2311 on ppc64 for with __builtin_pow) · b1eb28d1
      
      gcc/
      	PR target/80210
      	* config/rs6000/rs6000.c (rs6000_activate_target_options): New function.
      	(rs6000_set_current_function): Rewrite function to use it.
      
      gcc/testsuite/
      	PR target/80210
      	* gcc.target/powerpc/pr80210.c: New test.
      
      From-SVN: r251190
      Peter Bergner committed
    • re PR go/81893 (compilation error in libgo starting with r251127) · b66d3612
      	PR go/81893
          runtime: only use PPC GNU/Linux register code on little endian
          
          Reportedly the current code builds on little endian but not big endian.
          
          Fixes https://gcc.gnu.org/PR81893.
          
          Reviewed-on: https://go-review.googlesource.com/57110
      
      From-SVN: r251188
      Ian Lance Taylor committed
    • Simplify allocator usage in unordered containers · b74f0db1
      	* include/bits/hashtable_policy.h (_ReuseOrAllocNode): Remove
      	__value_alloc_type and __value_alloc_traits typedefs.
      	(_ReuseOrAllocNode::operator()): Call construct and destroy on the
      	node allocator.
      	(_Hashtable_alloc): Simplify __value_alloc_traits typedef.
      	(_Hashtable_alloc<_NodeAlloc>::_M_allocate_node(_Args&&...)): Call
      	construct on the node allocator.
      	(_Hashtable_alloc<_NodeAlloc>::_M_deallocate_node(__node_type*)): Call
      	destroy on the node allocator.
      
      From-SVN: r251187
      Jonathan Wakely committed
    • C++: fix ordering of missing std #include suggestion (PR c++/81514) · f661e57e
      gcc/cp/ChangeLog:
      	PR c++/81514
      	* name-lookup.c (maybe_suggest_missing_header): Convert return
      	type from void to bool; return true iff a suggestion was offered.
      	(suggest_alternative_in_explicit_scope): Move call to
      	maybe_suggest_missing_header to before use of best_match, and
      	return true if the former offers a suggestion.
      
      gcc/testsuite/ChangeLog:
      	PR c++/81514
      	* g++.dg/lookup/empty.h: New file.
      	* g++.dg/lookup/missing-std-include-2.C: Replace include of
      	stdio.h with empty.h and a declaration of a "std::sprintf" not based
      	on a built-in.
      
      From-SVN: r251186
      David Malcolm committed
    • PR libstdc++/81891 fix double-free in hashtable constructor · 676c4146
      	PR libstdc++/81891
      	* include/bits/hashtable.h (_Hashtable(_InputIterator, _InputIterator,
      	size_type, const _H1&, const _H2&, const _Hash&, const _Equal&,
      	const _ExtractKey&, const allocator_type&)): Let destructor do clean
      	up if an exception is thrown.
      	* testsuite/23_containers/unordered_map/cons/81891.cc: New.
      
      From-SVN: r251185
      Jonathan Wakely committed
    • c-parser.c (c_parser_postfix_expression): Remove unused code. · 3e7b80d7
      	* c-parser.c (c_parser_postfix_expression): Remove unused code.  Update
      	commentary.
      
      From-SVN: r251181
      Marek Polacek committed
    • Add warn_if_not_aligned attribute · 00aa1fa2
      Add warn_if_not_aligned attribute as well as  command line options:
      -Wif-not-aligned and -Wpacked-not-aligned.
      
      __attribute__((warn_if_not_aligned(N))) causes compiler to issue a
      warning if the field in a struct or union is not aligned to N:
      
      typedef unsigned long long __u64
        __attribute__((aligned(4),warn_if_not_aligned(8)));
      
      struct foo
      {
        int i1;
        int i2;
        __u64 x;
      };
      
      __u64 is aligned to 4 bytes.  But inside struct foo, __u64 should be
      aligned at 8 bytes.  It is used to define struct foo in such a way that
      struct foo has the same layout and x has the same alignment when __u64
      is aligned at either 4 or 8 bytes.
      
      Since struct foo is normally aligned to 4 bytes, a warning will be issued:
      
      warning: alignment 4 of 'struct foo' is less than 8
      
      Align struct foo to 8 bytes:
      
      struct foo
      {
        int i1;
        int i2;
        __u64 x;
      } __attribute__((aligned(8)));
      
      silences the warning.  It also warns the field with misaligned offset:
      
      struct foo
      {
        int i1;
        int i2;
        int i3;
        __u64 x;
      } __attribute__((aligned(8)));
      
      warning: 'x' offset 12 in 'struct foo' isn't aligned to 8
      
      This warning is controlled by -Wif-not-aligned and is enabled by default.
      
      When -Wpacked-not-aligned is used, the same warning is also issued for
      the field with explicitly specified alignment in a packed struct or union:
      
      struct __attribute__ ((aligned (8))) S8 { char a[8]; };
      struct __attribute__ ((packed)) S {
        struct S8 s8;
      };
      
      warning: alignment 1 of 'struct S' is less than 8
      
      This warning is disabled by default and enabled by -Wall.
      
      gcc/
      
      	PR c/53037
      	* print-tree.c (print_node): Support DECL_WARN_IF_NOT_ALIGN
      	and TYPE_WARN_IF_NOT_ALIGN.
      	* stor-layout.c (do_type_align): Merge DECL_WARN_IF_NOT_ALIGN.
      	(handle_warn_if_not_align): New.
      	(place_union_field): Call handle_warn_if_not_align.
      	(place_field): Call handle_warn_if_not_align.  Copy
      	TYPE_WARN_IF_NOT_ALIGN.
      	(finish_builtin_struct): Copy TYPE_WARN_IF_NOT_ALIGN.
      	(layout_type): Likewise.
      	* tree-core.h (tree_type_common): Add warn_if_not_align.  Set
      	spare to 18.
      	(tree_decl_common): Add warn_if_not_align.
      	* tree.c (build_range_type_1): Copy TYPE_WARN_IF_NOT_ALIGN.
      	* tree.h (TYPE_WARN_IF_NOT_ALIGN): New.
      	(SET_TYPE_WARN_IF_NOT_ALIGN): Likewise.
      	(DECL_WARN_IF_NOT_ALIGN): Likewise.
      	(SET_DECL_WARN_IF_NOT_ALIGN): Likewise.
      	* doc/extend.texi: Document warn_if_not_aligned attribute.
      	* doc/invoke.texi: Document -Wif-not-aligned and
      	-Wpacked-not-aligned.
      
      gcc/c-family/
      
      	PR c/53037
      	* c-attribs.c (handle_warn_if_not_aligned_attribute): New.
      	(c_common_attribute_table): Add warn_if_not_aligned.
      	(handle_aligned_attribute): Renamed to ...
      	(common_handle_aligned_attribute): Remove argument, name, and add
      	argument, warn_if_not_aligned.  Handle warn_if_not_aligned.
      	(handle_aligned_attribute): New.
      	* c.opt: Add -Wif-not-aligned and -Wpacked-not-aligned.
      
      gcc/c/
      
      	PR c/53037
      	* c-decl.c (merge_decls): Also merge DECL_WARN_IF_NOT_ALIGN.
      	(check_bitfield_type_and_width): Don't allow bit-field with
      	warn_if_not_aligned type.
      
      gcc/cp/
      
      	PR c/53037
      	* decl.c (duplicate_decls): Also merge DECL_WARN_IF_NOT_ALIGN.
      	* decl2.c (grokbitfield): Don't allow bit-field with
      	warn_if_not_aligned type.
      
      gcc/testsuite/
      
      	PR c/53037
      	* c-c++-common/pr53037-5.c: New test.
      	* g++.dg/pr53037-1.C: Likewise.
      	* g++.dg/pr53037-2.C: Likewise.
      	* g++.dg/pr53037-3.C: Likewise.
      	* g++.dg/pr53037-4.C: Likewise.
      	* gcc.dg/pr53037-1.c: Likewise.
      	* gcc.dg/pr53037-2.c: Likewise.
      	* gcc.dg/pr53037-3.c: Likewise.
      	* gcc.dg/pr53037-4.c: Likewise.
      
      From-SVN: r251180
      H.J. Lu committed
    • cmd/go: pass -funwind-tables when compiling C code · c32bd276
          
          Using -funwind-tables is necessary to permit Go code to correctly
          throw a panic through C code.  This hasn't been necessary in the past
          as -funwind-tables is the default on x86.  However, it is not the
          default for PPC AIX.
          
          Reviewed-on: https://go-review.googlesource.com/56650
      
      From-SVN: r251179
      Ian Lance Taylor committed
    • Daily bump. · 091f25d7
      From-SVN: r251178
      GCC Administrator committed
  5. 17 Aug, 2017 16 commits