1. 21 Aug, 2017 3 commits
  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 17 commits
    • Fix build of --enable-gather-detailed-mem-stats (PR bootstrap/81864). · 1e485f89
      2017-08-17  Martin Liska  <mliska@suse.cz>
      
      	PR bootstrap/81864
      	* tree-loop-distribution.c (ddrs_table): Change type to pointer
      	type.
      	(get_data_dependence): Use it as pointer type.
      	(distribute_loop): Likewise.
      
      From-SVN: r251165
      Martin Liska committed
    • altivec.md (UNSPEC_VMRGOW_DIRECT): New constant. · 6ccd2ece
      2017-08-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
      
      	* config/rs6000/altivec.md (UNSPEC_VMRGOW_DIRECT): New constant.
      	(p8_vmrgew_v4sf_direct): Generalize to p8_vmrgew_<mode>_direct.
      	(p8_vmrgow_<mode>_direct): New define_insn.
      	* config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Properly
      	handle endianness for vmrgew and vmrgow permute patterns.
      
      From-SVN: r251161
      Bill Schmidt committed
    • cp-tree.def (TEMPLATE_TEMPLATE_PARM): Remove stale comment. · 1f81b321
      	* cp-tree.def (TEMPLATE_TEMPLATE_PARM): Remove stale comment.
      	* cp-tree.h (ENUM_TEMPLATE_INFO): Delete.
      	(TYPE_TEMPLATE_INFO): Simplify.
      	(SET_TYPE_TEMPLATE_INFO): Simplify.
      
      From-SVN: r251159
      Nathan Sidwell committed
    • altivec.md (VParity): Remove TARGET_VSX_TIMODE. · 4a89b7e7
      gcc/
      	* config/rs6000/altivec.md (VParity): Remove TARGET_VSX_TIMODE.
      	* config/rs6000/rs6000-cpus.def: Remove comment.
      	(ISA_2_7_MASKS_SERVER): Delete OPTION_MASK_VSX_TIMODE;
      	(POWERPC_MASKS): Likewise.
      	* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Remove unneeded
      	use of TARGET_VSX_TIMODE.
      	(rs6000_setup_reg_addr_masks): Change TARGET_VSX_TIMODE to TARGET_VSX.
      	(rs6000_init_hard_regno_mode_ok): Remove unneeded uses of
      	TARGET_VSX_TIMODE.  Change use of TARGET_VSX_TIMODE to TARGET_VSX.
      	(rs6000_option_override_internal): Remove dead code.
      	(rs6000_legitimize_address): Change TARGET_VSX_TIMODE to TARGET_VSX.
      	(rs6000_legitimize_reload_address): Likewise.
      	(rs6000_legitimate_address_p): Likewise.
      	(rs6000_opt_masks): Delete "vsx-timode".
      	(rs6000_disable_incompatible_switches): Remove mention of -mvsx-timode
      	from function comment.
      	* config/rs6000/rs6000.h (MASK_VSX_TIMODE): Delete.
      	* config/rs6000/rs6000.md (FMOVE128_GPR): Remove TARGET_VSX_TIMODE.
      	(V16QI, V8HI, V4SI, V4SF, V2DI, V2DF, V1TI): Remove useless empty
      	condition.
      	* config/rs6000/rs6000.opt (mvsx-timode): Replace with stub.
      	* config/rs6000/vector.md (VEC_IP): Remove TARGET_VSX_TIMODE.
      	* config/rs6000/vsx.md (VSX_LE_128): Likewise.
      	(VSX_TI): Likewise.
      	(VSX_M): Likewise.
      	(define_peephole2): Likewise.
      
      gcc/testsuite/
      	* gcc.target/powerpc/p8vector-int128-1.c: Remove use of -mvsx-timode.
      	* gcc.target/powerpc/p9-vparity.c: Likewise.
      	* gcc.target/powerpc/pr68805.c: Likewise.
      	* gcc.target/powerpc/pr80098-4.c: Remove useless test case.
      
      From-SVN: r251158
      Peter Bergner committed
    • PR c/81859 - [8 Regression] valgrind error from warn_about_normalization · 86ef85d3
      gcc/ChangeLog:
      
      	PR c/81859
      	* pretty-print.c (pp_format): Use strnlen in %.*s to avoid reading
      	past the end of an array.
      	(test_pp_format): Add test cases.
      
      From-SVN: r251157
      Martin Sebor committed
    • Add missing ECF_NOTHROW flags to internal.def · f8c770dd
      This patch adds missing ECF_NOTHROW flags to the vectorisable
      integer internal functions.
      
      2017-08-17  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* internal-fn.def (CLRSB, CLZ, CTZ, FFS, PARITY, POPCOUNT): Add
      	missing ECF_NOTHROW flags.
      
      From-SVN: r251155
      Richard Sandiford committed
    • lex.c (maybe_add_lang_type_raw): BOUND_TEMPLATE_TEMPLATE_PARMs don't need lang_type. · 776ff3ef
      	* lex.c (maybe_add_lang_type_raw): BOUND_TEMPLATE_TEMPLATE_PARMs
      	don't need lang_type.
      	(cxx_make_type): Use maybe_add_lang_type_raw return value.
      	* mangle.c (CLASSTYPE_TEMPLATE_ID_P): Don't rely on
      	TYPE_LANG_SPECIFIC.
      
      From-SVN: r251154
      Nathan Sidwell committed
    • re PR target/72804 (Poor code gen with -mvsx-timode) · d00fdf85
      gcc/
      	PR target/72804
      	* config/rs6000/vsx.md (*vsx_le_permute_<mode>): Add support for
      	operands residing in integer registers.
      	(*vsx_le_perm_load_<mode>): Likewise.
      	(*vsx_le_perm_store_<mode>): Likewise.
      	(define_peephole2): Add peepholes to optimize the above.
      
      gcc/testsuite/
      	PR target/72804
      	* gcc.target/powerpc/pr72804.c: New test.
      
      From-SVN: r251153
      Peter Bergner committed
    • re PR middle-end/81814 (Incorrect behaviour at -O0 (conditional operator)) · e67bbd5d
      	PR middle-end/81814
      	* fold-const.c (operand_equal_for_comparison_p): Remove code that used
      	to mimic what shorten_compare did.  Change the return type to bool.
      	(fold_cond_expr_with_comparison): Update call to
      	operand_equal_for_comparison_p.
      	(fold_ternary_loc): Likewise.
      
      	* gcc.dg/torture/pr81814.c: New test.
      
      From-SVN: r251152
      Marek Polacek committed
    • re PR ada/81878 (--disable-bootstrap --enable-languages=ada fails) · 909e448f
      2017-08-17  Richard Biener  <rguenther@suse.de>
      
      	PR ada/81878
      	* Makefile.in (CXX_LFLAGS): Remove.
      	(TOOLS_FLAGS_TO_PASS_NATIVE): Pass $(CXX) as CXX.
      	(TOOLS_FLAGS_TO_PASS_RE): Likewise.
      
      From-SVN: r251150
      Richard Biener committed
    • [AArch64] Improve SIMD store of zero. · ea58eb88
      This patch changes patterns in aarch64-simd.md to replace
      
          movi    v0.4s, 0
          str    q0, [x0, 16]
      
      With:
      
          stp xzr, xzr, [x0, 16]
      
      When we are storing zeros to vectors like this:
      
          void f(uint32x4_t *p) {
            uint32x4_t x = { 0, 0, 0, 0};
            p[1] = x;
          }
      
      gcc/
      2017-08-17  Jackson Woodruff  <jackson.woodruff@arm.com>
      
      	* aarch64-simd.md (mov<mode>): No longer force zero immediate into
      	register.
      	(*aarch64_simd_mov<mode>): Add new case for stp	using zero immediate.
      
      gcc/testsuite/
      2017-08-17  Jackson Woodruff  <jackson.woodruff@arm.com>
      
      	* gcc.target/aarch64/simd/vect_str_zero.c: New testcase.
      
      From-SVN: r251149
      Jackson Woodruff committed
    • cp-tree.h (struct lang_type): Remove template_info field. · 0fc81d78
      	* cp-tree.h (struct lang_type): Remove template_info field.
      	(CLASSTYPE_TEMPLATE_INFO): Use TYPE_LANG_SLOT_1.
      	(TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Likewise.
      
      From-SVN: r251148
      Nathan Sidwell committed
    • Add the missing ChangeLog for r251076 · 157d38ba
      From-SVN: r251147
      H.J. Lu committed
    • tree-ssa-structalias.c (solve_graph): When propagating to successors update the… · d506d6ca
      tree-ssa-structalias.c (solve_graph): When propagating to successors update the graphs succ edges and avoid duplicate...
      
      2017-08-17  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-structalias.c (solve_graph): When propagating
      	to successors update the graphs succ edges and avoid duplicate work.
      
      From-SVN: r251146
      Richard Biener committed
    • re PR target/81861 (ASan pr64820.c testcase segfaults with LTO and -fstack-protector-strong) · b8d8d3ff
      2017-08-17  Maxim Ostapenko  <m.ostapenko@samsung.com>
      
      	PR target/81861
      	* config/i386/i386.c (ix86_option_override_internal): Save target
      	specific options after ix86_stack_protector_guard_reg was changed.
      
      From-SVN: r251145
      Maxim Ostapenko committed
    • Require effective target nonlocal_goto for ipa/pr81696.c · ab4b719a
      2017-08-17  Tom de Vries  <tom@codesourcery.com>
      
      	* gcc.dg/ipa/pr81696.c: Require effective target nonlocal_goto.
      
      From-SVN: r251144
      Tom de Vries committed
    • re PR fortran/81827 (Large compile time with derived-type rrays) · afdb85f9
      2017-08-17  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/81827
      	* tree-ssa-structalias.c (struct variable_info): Add is_reg_var
      	flag.
      	(new_var_info): Initialize it conservatively.
      	(get_call_vi): Mark register vars.
      	(new_scalar_tmp_constraint_exp): Likewise.
      	(handle_rhs_call): Likewise.
      	(handle_const_call): Likewise.
      	(create_function_info_for): Likewise.
      	(solve_constraints): Sort varinfos to separate register from
      	non-register vars to pack points-to solution bitmaps during
      	iteration.
      
      From-SVN: r251143
      Richard Biener committed