1. 18 Aug, 2017 5 commits
    • 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
  2. 17 Aug, 2017 21 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
    • gimplify.c (gimplify_adjust_omp_clauses): Compare with 0 instead of 1. · cca6b724
      	* gimplify.c (gimplify_adjust_omp_clauses): Compare with 0 instead of
      	1.
      
      From-SVN: r251142
      Marek Polacek committed
    • tree-vrp.c (vrp_int_const_binop): Do not set *overflow_p to true when overflow… · 344be1fd
      tree-vrp.c (vrp_int_const_binop): Do not set *overflow_p to true when overflow is undefined and we saturated the...
      
      2017-08-17  Richard Biener  <rguenther@suse.de>
      
      	* tree-vrp.c (vrp_int_const_binop): Do not set *overflow_p
      	to true when overflow is undefined and we saturated the
      	result.
      
      	* gcc.dg/tree-ssa/vrp117.c: New testcase.
      
      From-SVN: r251141
      Richard Biener committed
    • [RS6000] PR 80938, Don't emit frame info for regs that don't need saving · b263d657
      It is possible when using out-of-line register saves or store multiple
      to save some registers unnecessarily, for example one reg in the block
      saved might be unused.  We don't need to emit frame info for those
      registers as that just bloats the info, and also can result in an ICE
      when shrink-wrap gives multiple paths through the function saving
      different sets of registers.  Join points need to have identical frame
      register save state regardless of the path taken.
      
      This patch reverts the previous fix for PR80939 "Use SAVE_MULTIPLE
      only if we restore what it saves (PR80938)" and instead fixes the PR
      by correcting the frame info.  The change to rs6000_savres_strategy
      is an optimization, but note that it hides the underlying problem in
      the PR testcase.
      
      	PR target/80938
      	* config/rs6000/rs6000.c (rs6000_savres_strategy): Revert 2017-08-09.
      	Don't use store multiple if only one reg needs saving.
      	(interesting_frame_related_regno): New function.
      	(rs6000_frame_related): Don't emit frame info for regs that
      	don't need saving.
      	(rs6000_emit_epilogue): Likewise.
      
      From-SVN: r251140
      Alan Modra committed
    • Daily bump. · 706028a5
      From-SVN: r251139
      GCC Administrator committed
  3. 16 Aug, 2017 14 commits