1. 05 Jan, 2017 28 commits
    • pr71670.c: Require p9vector. · 8c15f541
              * gcc.target/powerpc/pr71670.c: Require p9vector.
              * gcc.target/powerpc/p9-novsx.c: Same.
      
      From-SVN: r244111
      David Edelsohn committed
    • Introduce RTL function reader · 51b86113
      This is the combination of these patches:
      - [8a/9] Introduce class function_reader (v8)
      - Add ASSERT_RTX_PTR_EQ
      - [8b/9] Add target-independent selftests of RTL function reader (v2)
      - [8c/9] Add aarch64-specific selftests for RTL function reader (v2)
      - [8d/9] Add x86_64-specific selftests for RTL function reader (v2)
      
      gcc/ChangeLog:
      	* Makefile.in (OBJS): Add read-md.o, read-rtl.o,
      	read-rtl-function.o, and selftest-rtl.o.
      	* config/aarch64/aarch64.c: Include selftest.h and
      	selftest-rtl.h.
      	(selftest::aarch64_test_loading_full_dump): New function.
      	(selftest::aarch64_run_selftests): New function.
      	(TARGET_RUN_TARGET_SELFTESTS): Wire it up to
      	selftest::aarch64_run_selftests.
      	* config/i386/i386.c
      	(selftest::ix86_test_loading_dump_fragment_1): New function.
      	(selftest::ix86_test_loading_call_insn): New function.
      	(selftest::ix86_test_loading_full_dump): New function.
      	(selftest::ix86_test_loading_unspec): New function.
      	(selftest::ix86_run_selftests): Call the new functions.
      	* emit-rtl.c (maybe_set_max_label_num): New function.
      	* emit-rtl.h (maybe_set_max_label_num): New decl.
      	* function.c (instantiate_decls): Guard call to
      	instantiate_decls_1 with if (DECL_INITIAL (fndecl)).
      	* function-tests.c (selftest::verify_three_block_rtl_cfg): Remove
      	"static".
      	* gensupport.c (gen_reader::gen_reader): Pass "false"
      	for new "compact" param of rtx_reader.
      	* print-rtl.c (rtx_writer::print_rtx_operand): Print "(nil)"
      	rather than an empty string for NULL strings.
      	* read-md.c: Potentially include config.h rather than bconfig.h.
      	Wrap include of errors.h with #ifdef GENERATOR_FILE.
      	(have_error): New global, copied from errors.c.
      	(md_reader::read_name): Rename to...
      	(md_reader::read_name_1): ...this, adding "out_loc" param,
      	and converting "missing name or number" to returning false, rather
      	than failing.
      	(md_reader::read_name): Reimplement in terms of read_name_1.
      	(md_reader::read_name_or_nil): New function.
      	(md_reader::read_string): Handle "(nil)" by returning NULL.
      	(md_reader::md_reader): Add new param "compact".
      	(md_reader::read_md_files): Wrap with #ifdef GENERATOR_FILE.
      	(md_reader::read_file): New method.
      	* read-md.h (md_reader::md_reader): Add new param "compact".
      	(md_reader::read_file): New method.
      	(md_reader::is_compact): New accessor.
      	(md_reader::read_name): Convert return type from void to
      	file_location.
      	(md_reader::read_name_or_nil): New decl.
      	(md_reader::read_name_1): New decl.
      	(md_reader::m_compact): New field.
      	(noop_reader::noop_reader): Pass "false" for new "compact" param
      	of rtx_reader.
      	(rtx_reader::rtx_reader): Add new "compact" param.
      	(rtx_reader::read_rtx_operand): Make virtual and convert return
      	type from void to rtx.
      	(rtx_reader::read_until): New decl.
      	(rtx_reader::handle_any_trailing_information): New virtual
      	function.
      	(rtx_reader::postprocess): New virtual function.
      	(rtx_reader::finalize_string): New virtual function.
      	(rtx_reader::m_in_call_function_usage): New field.
      	(rtx_reader::m_reuse_rtx_by_id): New field.
      	* read-rtl-function.c: New file.
      	* selftest-rtl.c (selftest::assert_rtx_ptr_eq_at): New function.
      	* selftest-rtl.h (ASSERT_RTX_PTR_EQ): New macro.
      	(selftest::verify_three_block_rtl_cfg): New decl.
      	* read-rtl-function.h: New file.
      	* read-rtl.c: Potentially include config.h rather than bconfig.h.
      	For host, include function.h, memmodel.h, and emit-rtl.h.
      	(one_time_initialization): New function.
      	(struct compact_insn_name): New struct.
      	(compact_insn_names): New array.
      	(find_code): Handle insn codes in compact dumps.
      	(apply_subst_iterator): Wrap with #ifdef GENERATOR_FILE.
      	(bind_subst_iter_and_attr): Likewise.
      	(add_condition_to_string): Likewise.
      	(add_condition_to_rtx): Likewise.
      	(apply_attribute_uses): Likewise.
      	(add_current_iterators): Likewise.
      	(apply_iterators): Likewise.
      	(initialize_iterators): Guard usage of apply_subst_iterator with
      	#ifdef GENERATOR_FILE.
      	(read_conditions): Wrap with #ifdef GENERATOR_FILE.
      	(md_reader::read_mapping): Likewise.
      	(add_define_attr_for_define_subst): Likewise.
      	(add_define_subst_attr): Likewise.
      	(read_subst_mapping): Likewise.
      	(check_code_iterator): Likewise.
      	(rtx_reader::read_rtx): Likewise.  Move one-time initialization
      	logic to...
      	(one_time_initialization): New function.
      	(rtx_reader::read_until): New method.
      	(read_flags): New function.
      	(parse_reg_note_name): New function.
      	(rtx_reader::read_rtx_code): Initialize "iterator" to NULL.
      	Handle reuse_rtx ids.
      	Wrap iterator lookup within #ifdef GENERATOR_FILE.
      	Add parsing support for RTL dumps, mirroring the special-cases in
      	print_rtx, by calling read_flags, reading REG_NOTE names, INSN_UID
      	values, and calling handle_any_trailing_information.
      	(rtx_reader::read_rtx_operand): Convert return type from void
      	to rtx, returning return_rtx.  Handle case 'e'.  Call
      	finalize_string on XSTR and XTMPL fields.
      	(rtx_reader::read_nested_rtx):  Handle dumps in which trailing
      	 "(nil)" values were omitted.  Call the postprocess vfunc on the
      	return_rtx.
      	(rtx_reader::rtx_reader): Add new "compact" param and pass to base
      	class ctor.  Initialize m_in_call_function_usage.  Call
      	one_time_initialization.
      	* rtl-tests.c (selftest::test_uncond_jump): Call
      	set_new_first_and_last_insn.
      	* rtl.h (read_rtx): Wrap decl with #ifdef GENERATOR_FILE.
      	* selftest-rtl.c: New file.
      	* selftest-rtl.h (class selftest::rtl_dump_test): New class.
      	(selftest::get_insn_by_uid): New decl.
      	* selftest-run-tests.c (selftest::run_tests): Call
      	read_rtl_function_c_tests.
      	* selftest.h  (selftest::read_rtl_function_c_tests): New decl.
      	* tree-dfa.c (ssa_default_def): Return NULL_TREE for rtl function
      	dumps.
      
      gcc/testsuite/ChangeLog:
      	* selftests/asr_div1.rtl: New file.
      	* selftests/aarch64: New subdirectory.
      	* selftests/aarch64/times-two.rtl: New file.
      	* selftests/bb-index.rtl: New file.
      	* selftests/cfg-test.rtl: New file.
      	* selftests/const-int.rtl: New file.
      	* selftests/example-labels.rtl: New file.
      	* selftests/insn-with-mode.rtl: New file.
      	* selftests/jump-to-label-ref.rtl: New file.
      	* selftests/jump-to-return.rtl: New file.
      	* selftests/jump-to-simple-return.rtl: New file.
      	* selftests/mem.rtl: New file.
      	* selftests/note-insn-deleted.rtl: New file.
      	* selftests/note_insn_basic_block.rtl: New file.
      	* selftests/simple-cse.rtl: New file.
      	* selftests/symbol-ref.rtl: New file.
      	* selftests/x86_64: New subdirectory.
      	* selftests/x86_64/call-insn.rtl: New file.
      	* selftests/x86_64/copy-hard-reg-into-frame.rtl: New file.
      	* selftests/x86_64/times-two.rtl: New file.
      	* selftests/x86_64/unspec.rtl: New file.
      
      From-SVN: r244110
      David Malcolm committed
    • * ChangeLog: Fix whitespace. · 7f86d7de
      From-SVN: r244109
      Uros Bizjak committed
    • i386.md (*testqi_ext_3): No need to handle memory operands in a special way. · 1dc06b76
      	* config/i386/i386.md (*testqi_ext_3): No need to handle memory
      	operands in a special way.  Assert that pos+len <= mode precision.
      
      From-SVN: r244108
      Uros Bizjak committed
    • Remove unnecessary typedef from std::function · 295ce2e5
      	* include/bits/std_function.h (function::_Signature_type): Remove.
      	(function::function(_Functor)): Adjust.
      
      From-SVN: r244107
      Jonathan Wakely committed
    • common.opt (fvect-cost-model): Remove RejectNegative flag... · 205d7111
      	* common.opt (fvect-cost-model): Remove RejectNegative flag, use
      	3 argument Alias with unlimited for the negative form.
      	(fno-vect-cost-model): Removed.
      
      From-SVN: r244106
      Jakub Jelinek committed
    • HSA: implement DIVMOD internal function call · 38a49b3c
      2017-01-05  Martin Liska  <mliska@suse.cz>
      
      	* hsa-gen.c (gen_hsa_divmod): New function.
      	(gen_hsa_insn_for_internal_fn_call): Use the function
      	for IFN_DIVMOD.
      
      From-SVN: r244104
      Martin Liska committed
    • Error for '-' as filename of a precompiled header (PR pch/78970) · cd445b54
      2017-01-05  Martin Liska  <mliska@suse.cz>
      
      	PR pch/78970
      	* c-opts.c (c_common_post_options): Reject '-' filename for a precompiled
      	header.
      2017-01-05  Martin Liska  <mliska@suse.cz>
      
      	PR pch/78970
      	* gcc.c (lookup_compiler): Reject '-' filename for a precompiled
      	header.
      
      From-SVN: r244103
      Martin Liska committed
    • Fix typo. · abbaf885
      From-SVN: r244102
      David Edelsohn committed
    • re PR c++/78765 (ICE on invalid C++ code on x86_64-linux-gnu (internal compiler… · dc7650cc
      re PR c++/78765 (ICE on invalid C++ code on x86_64-linux-gnu (internal compiler error: in cp_build_addr_expr_1, at cp/typeck.c:5708))
      
      	cp/
      	PR c++/78765
      	* pt.c (convert_nontype_argument): Don't try and see if integral
      	or enum expressions are constants prematurely.
      
      	testsuite/
      	PR c++/78765
      	* g++.dg/cpp0x/pr78765.C: New.
      
      From-SVN: r244101
      Nathan Sidwell committed
    • S/390: Additional memset/memcpy runtime tests. · 3db70565
      These were provided by Dominik to check more of the corner case in our
      memset/memcpy inline code.
      
      gcc/testsuite/ChangeLog:
      
      2017-01-05  Dominik Vogt  <vogt@linux.vnet.ibm.com>
      
      	* gcc.target/s390/memcpy-2.c: New test.
      	* gcc.target/s390/memset-2.c: New test.
      
      From-SVN: r244099
      Dominik Vogt committed
    • S/390: Unroll mvc loop for memcpy with small constant lengths. · f5a537e3
      See the memset unrolling patch.  The very same applies to memcpys with
      constant lengths.
      
      2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/s390.c (s390_expand_movmem): Unroll MVC loop for
      	small constant length operands.
      
      gcc/testsuite/ChangeLog:
      
      2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* gcc.target/s390/memcpy-1.c: New test.
      
      From-SVN: r244098
      Andreas Krebbel committed
    • S/390: Unroll mvc/xc loop for memset with small constant · 8597cd33
       lengths.
      
      When expanding a memset we emit a loop of MVCs/XCs instructions dealing
      with 256 byte blocks.  This loop used to get unrolled with older GCCs
      when using constant length operands.  GCC lost this ability probably
      when more of the loop unrolling stuff has been moved to tree level.
      
      With this patch the unrolling is done manually when emitting the RTL
      insns.
      
      2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* gcc.target/s390/memset-1.c: New test.
      
      gcc/ChangeLog:
      
      2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/s390.c (s390_expand_setmem): Unroll the loop for
      	small constant length operands.
      
      From-SVN: r244097
      Andreas Krebbel committed
    • S/390: memset: Avoid overlapping MVC operands between iterations. · 587790e6
      A memset with a value != 0 is currently implemented using the mvc
      instruction propagating the first byte through 256 byte blocks.  While
      for the first mvc the byte is written with a separate instruction
      subsequent MVCs used the last byte of the previous 256 byte block.
      
      Starting with z13 this causes a major performance degradation.  With
      this patch we always set the first byte with an mvi or stc in order to
      avoid the overlapping of the MVC operands between loop iterations.
      
      On older machines this basically makes no measurable difference so the
      patch enables the new behavior for all machine levels in order to make
      sure that code built for older machine levels runs well when moved to
      a z13.
      
      Bootstrapped and regression tested on s390 and s390x using z900 and z13
      as default -march level. No regressions.
      
      gcc/ChangeLog:
      
      2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/s390.c (s390_expand_setmem): Avoid overlapping bytes
      	between loop iterations.
      
      From-SVN: r244096
      Andreas Krebbel committed
    • Do not sanitize in an abnormal context (PR sanitizer/78815). · 6ff92497
      2017-01-05  Martin Liska  <mliska@suse.cz>
      
      	PR sanitizer/78815
      	* gimplify.c (gimplify_decl_expr): Compare to
      	asan_poisoned_variables instread of checking flags.
      	(gimplify_target_expr): Likewise.
      	(gimplify_expr): Likewise.
      	(gimplify_function_tree): Conditionally initialize
      	asan_poisoned_variables.
      
      From-SVN: r244095
      Martin Liska committed
    • vimrc: fix TAB settings · 6438c2f4
      
      2017-01-05  Martin Liska  <mliska@suse.cz>
      
      	* vimrc: Update indentation definition.
      
      From-SVN: r244094
      Martin Liska committed
    • re PR rtl-optimization/78812 (Wrong code generation due to hoisting memory load… · d80c6d02
      re PR rtl-optimization/78812 (Wrong code generation due to hoisting memory load across function call)
      
      	PR tree-optimizatin/78812
      	* rtl.h (contains_mem_rtx_p): Prototype.
      	* ifcvt.c (containts_mem_rtx_p): Move from here to...
      	* rtlanal.c (contains_mem_rtx_p): Here and remvoe static linkage.
      	* gcse.c (prune_expressions): Use contains_mem_rtx_p to discover
      	and prune MEMs that are not at the toplevel of a SET_SRC rtx.  Look
      	through ZERO_EXTEND and SIGN_EXTEND when trying to avoid pruning
      	MEMs.
      
      	PR tree-optimization/78812
      	* g++.dg/torture/pr78812.C: New test.
      
      From-SVN: r244093
      Jeff Law committed
    • re PR libstdc++/78996 (<variant> uses macro as name) · 0f9cf7ff
      2017-01-05  Tim Shen  <timshen@google.com>
      
      	PR libstdc++/78996
      	* include/std/variant (__gen_vtable_impl): rename __unused to
      	__dimensions to avoid naming conflict.
      
      From-SVN: r244092
      Tim Shen committed
    • [bootstrap-O3] add a default initializer to avoid a warning at -O3 · a954833d
      Building with the bootstrap-O3 configuration option fails to compile
      input.c due to an AFAICT false-positive warning about an uninitialized
      use of a variable.
      
      This patch adds a default initializer to silence it.
      
      for  gcc/ChangeLog
      
      	* input.c (assert_char_at_range): Default-initialize
      	actual_range.
      
      From-SVN: r244091
      Alexandre Oliva committed
    • [bootstrap-O3] use unsigned type for regno in df-scan · 460bdc0a
      This patch fixes a false-positive warning in df-scan, at bootstrap-O3
      failed, and enables GCC to optimize out the code that leads to the
      warning.
      
      df_ref_create_structure was inlined into the else part of
      df_ref_record.  Due to the condition of the corresponding if, In the
      else part, VRP deduced unsigned regno >= FIRST_PSEUDO_REGISTER.
      
      In df_ref_create_structure, there's another regno variable,
      initialized with the same expression and value as the caller's.  GCC
      can tell as much, but this regno variable is signed.  It is used,
      shifted right, to index a hard regset bit array within a path that
      tests that this signed regno < FIRST_PSEUDO_REGISTER.
      
      GCC warned about the possible out-of-range indexing into the hard
      regset array.  It shouldn't, after all, the same regno can't possibly
      be both < FIRST_PSEUDO_REGISTER and >= FIRST_PSEUDO_REGISTER, can it?
      
      Well, the optimizers correctly decide it could, if it was a negative
      int that, when converted to unsigned, became larger than
      FIRST_PSEUDO_REGISTER.  But GCC doesn't know regno can't be negative,
      so the test could not be optimize out.  What's more, given the
      constraints, VRP correctly concluded the hard regset array would
      always be indexed by a value way outside the array index range.
      
      This patch changes the inlined regno to unsigned, like the caller's,
      so that we can now tell the conditions can't both hold, so we optimize
      out the path containing the would-be out-of-range array indexing.
      
      for  gcc/ChangeLog
      
      	* df-scan.c (df_ref_create_structure): Make regno unsigned,
      	to match the caller.
      
      From-SVN: r244090
      Alexandre Oliva committed
    • [-fcompare-debug] find jump before debug insns in expand · 4dbebf6f
      A debug insn after the final jump of a basic block may cause the
      expander to emit a dummy move where the non-debug compile won't
      because it finds the jump insn at the end of the insn stream.
      
      Fix the condition so that, instead of requiring the jump as the last
      insn, it also matches a jump followed by debug insns.
      
      This fixes the compilation of libgcc/libgcov-profiler.c with
      -fcompare-debug on i686-linux-gnu.
      
      for  gcc/ChangeLog
      
      	* cfgexpand.c (expand_gimple_basic_block): Disregard debug
      	insns after final jump in test to emit dummy move.
      
      From-SVN: r244089
      Alexandre Oliva committed
    • [-fcompare-debug] skip more debug stmts in cleanup_empty_eh · 55665504
      Various Ada RTS files failed -fcompare-debug compilation because debug
      stmts prevented EH cleanups from taking place.  Adjusting
      cleanup_empty_eh to skip them fixes it.
      
      for  gcc/ChangeLog
      
      	* gimple-iterator.h (gsi_one_nondebug_before_end_p): New.
      	* tree-eh.c (cleanup_empty_eh): Skip more debug stmts.
      
      From-SVN: r244088
      Alexandre Oliva committed
    • [bootstrap-O3,fortran] add a NULL initializer to avoid a warning at -O3 · 69221690
      Building with the bootstrap-O3 configuration option fails to compile
      fortran/module.c due to an AFAICT false-positive warning about an
      uninitialized use of a variable.
      
      This patch adds a dummy initializer to silence it.
      
      for  gcc/fortran/ChangeLog
      
      	* module.c (load_omp_udrs): Initialize name.
      
      From-SVN: r244087
      Alexandre Oliva committed
    • [bootstrap-O1] add initializers to avoid warnings at -O1 · d61d5fcd
      Building with the bootstrap-O1 configuration option fails to compile a
      number of files due to AFAICT false-positive warnings about uses of
      uninitialized variables.
      
      This patch adds dummy initializers to silence them all.
      
      for  gcc/ChangeLog
      
      	* multiple_target.c (create_dispatcher_calls): Init e_next.
      	* tree-ssa-loop-split.c (split_loop): Init border.
      	* tree-vect-loop.c (vect_determine_vectorization_factor): Init
      	scalar_type.
      
      From-SVN: r244086
      Alexandre Oliva committed
    • Fix ChangeLog date · 08edc320
      From-SVN: r244085
      Michael Meissner committed
    • re PR target/71977 (powerpc64: Use VSR when operating on float and integer) · fba4b861
      [gcc]
      2017-01-04  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	PR target/71977
      	PR target/70568
      	PR target/78823
      	* config/rs6000/predicates.md (sf_subreg_operand): New predicate.
      	(altivec_register_operand): Do not return true if the operand
      	contains a SUBREG mixing SImode and SFmode.
      	(vsx_register_operand): Likewise.
      	(vsx_reg_sfsubreg_ok): New predicate.
      	(vfloat_operand): Do not return true if the operand contains a
      	SUBREG mixing SImode and SFmode.
      	(vint_operand): Likewise.
      	(vlogical_operand): Likewise.
      	(gpc_reg_operand): Likewise.
      	(int_reg_operand): Likewise.
      	* config/rs6000/rs6000-protos.h (valid_sf_si_move): Add
      	declaration.
      	* config/rs6000/rs6000.c (valid_sf_si_move): New function to
      	determine if a MOVSI or MOVSF operation contains SUBREGs that mix
      	SImode and SFmode.
      	(rs6000_emit_move_si_sf_subreg): New helper function.
      	(rs6000_emit_move): Call rs6000_emit_move_si_sf_subreg to possbily
      	fixup SUBREGs involving SImode and SFmode.
      	* config/rs6000/vsx.md (SFBOOL_*): New constants that are operand
      	numbers for the new peephole2 optimization.
      	(peephole2 for SFmode unions): New peephole2 to optimize cases in
      	the GLIBC math library that do AND/IOR/XOR operations on single
      	precision floating point.
      	* config/rs6000/rs6000.h (TARGET_NO_SF_SUBREG): New internal
      	target macros to say whether we need to avoid SUBREGs mixing
      	SImode and SFmode.
      	(TARGET_ALLOW_SF_SUBREG): Likewise.
      	* config/rs6000/rs6000.md (UNSPEC_SF_FROM_SI): New unspecs.
      	(UNSPEC_SI_FROM_SF): Likewise.
      	(iorxor): Change spacing.
      	(and_ior_xor): New iterator for AND, IOR, and XOR.
      	(movsi_from_sf): New insns for SImode/SFmode SUBREG support.
      	(movdi_from_sf_zero_ext): Likewise.
      	(mov<mode>_hardfloat, FMOVE32 iterator): Use register_operand
      	instead of gpc_reg_operand.  Add SImode/SFmode SUBREG support.
      	(movsf_from_si): New insn for SImode/SFmode SUBREG support.
      	(fma<mode>4): Use gpc_reg_operand instead of register_operand.
      	(fms<mode>4): Likewise.
      	(fnma<mode>4): Likewise.
      	(fnms<mode>4): Likewise.
      	(nfma<mode>4): Likewise.
      	(nfms<mode>4): Likewise.
      
      [gcc/testsuite]
      2017-01-04  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	PR target/71977
      	PR target/70568
      	PR target/78823
      	* gcc.target/powerpc/pr71977-1.c: New tests to check whether on
      	64-bit VSX systems with direct move, whether we optimize common
      	code sequences in the GLIBC math library for float math functions.
      	* gcc.target/powerpc/pr71977-2.c: Likewise.
      
      From-SVN: r244084
      Michael Meissner committed
    • Daily bump. · 179925d2
      From-SVN: r244083
      GCC Administrator committed
    • * pt_BR.po, ru.po: Update. · e04916e3
      From-SVN: r244080
      Joseph Myers committed
  2. 04 Jan, 2017 12 commits
    • re PR c++/64767 (Could GCC warn when a pointer is compared against '\0'?) · a9342885
      	PR c++/64767
      	* c.opt (Wpointer-compare): New option.
      
      	* c-parser.c (c_parser_postfix_expression): Mark zero character
      	constants by setting original_type in c_expr.
      	* c-typeck.c (parser_build_binary_op): Warn when a pointer is compared
      	with a zero character constant.
      	(char_type_p): New function.
      
      	* typeck.c (cp_build_binary_op): Warn when a pointer is compared with
      	a zero character literal.
      
      	* doc/invoke.texi: Document -Wpointer-compare.
      
      	* c-c++-common/Wpointer-compare-1.c: New test.
      
      From-SVN: r244076
      Marek Polacek committed
    • re PR c++/78949 (incorrect "unused variable" warning with SSE2) · abec4284
      	PR c++/78949
      	* typeck.c (cp_build_unary_op): Call mark_rvalue_use on arg if it has
      	vector type.
      
      	* c-c++-common/Wunused-var-16.c: New test.
      
      From-SVN: r244075
      Jakub Jelinek committed
    • re PR c++/78693 (Bogus 'inconsistent deduction for ‘auto’' error when having a… · 26c43e27
      re PR c++/78693 (Bogus 'inconsistent deduction for ‘auto’' error when having a dependent initializer and a nondependent one in the same declaration)
      
      	PR c++/78693
      	* parser.c (cp_parser_simple_declaration): Only complain about
      	inconsistent auto deduction if auto_result doesn't use auto.
      
      	* g++.dg/cpp0x/pr78693.C: New test.
      
      From-SVN: r244074
      Jakub Jelinek committed
    • optc-gen.awk: Emit #error for -W*/-f*/-m* Enum without RejectNegative. · 742b1804
      	* optc-gen.awk: Emit #error for -W*/-f*/-m* Enum without
      	RejectNegative.
      
      From-SVN: r244073
      Jakub Jelinek committed
    • re PR driver/78957 (ICE: SIGSEGV with -fno-sso-struct=web) · fc73e60c
      	PR driver/78957
      	* c.opt (fsso-struct=): Add RejectNegative.
      
      	* gcc.dg/pr78957.c: New test.
      
      From-SVN: r244072
      Jakub Jelinek committed
    • parser.c (cp_parser_simple_declaration): Diagnose function declaration among… · c9cf3863
      parser.c (cp_parser_simple_declaration): Diagnose function declaration among more than one init-declarators with auto...
      
      	* parser.c (cp_parser_simple_declaration): Diagnose function
      	declaration among more than one init-declarators with auto
      	specifier.
      
      	* g++.dg/cpp1y/auto-fn34.C: New test.
      
      From-SVN: r244071
      Jakub Jelinek committed
    • re PR c++/71182 (parser.c cp_lexer_previous_token sanitizer detects member call on null pointer) · 066435fe
      	PR c++/71182
      	* parser.c (cp_lexer_previous_token): Use vec_safe_address in the
      	assertion, as lexer->buffer may be NULL.
      
      	* g++.dg/cpp0x/pr71182.C: New test.
      
      From-SVN: r244070
      Jakub Jelinek committed
    • dwarf2out.c (output_loc_list): Don't throw away 64K+ location descriptions for… · fb85f9d0
      dwarf2out.c (output_loc_list): Don't throw away 64K+ location descriptions for -gdwarf-5 and emit them as...
      
      	* dwarf2out.c (output_loc_list): Don't throw away 64K+ location
      	descriptions for -gdwarf-5 and emit them as uleb128 instead of
      	2-byte data.
      
      From-SVN: r244069
      Jakub Jelinek committed
    • re PR target/78056 (build failure on Power7) · 598bd687
      gcc/testsuite/ChangeLog:
      
      2017-01-04  Kelvin Nilsen  <kelvin@gcc.gnu.org>
      
      	PR target/78056
      	* gcc.target/powerpc/pr78056-1.c: New test.
      	* gcc.target/powerpc/pr78056-2.c: New test.
      	* gcc.target/powerpc/pr78056-3.c: New test.
      	* gcc.target/powerpc/pr78056-4.c: New test.
      	* gcc.target/powerpc/pr78056-5.c: New test.
      	* gcc.target/powerpc/pr78056-6.c: New test.
      	* gcc.target/powerpc/pr78056-7.c: New test.
      	* gcc.target/powerpc/pr78056-8.c: New test.
      	* lib/target-supports.exp
      	(check_effective_target_powerpc_popcntb_ok): New procedure to test
      	whether the effective target supports the popcntb instruction.
      
      gcc/ChangeLog:
      
      2017-01-04  Kelvin Nilsen  <kelvin@gcc.gnu.org>
      
      	PR target/78056
      	* doc/sourcebuild.texi (PowerPC-specific attributes): Add
      	documentation of the powerpc_popcntb_ok attribute.
      	* config/rs6000/rs6000.c (rs6000_option_override_internal): Add
      	code to issue warning messages if a requested CPU configuration is
      	not supported by the binary (assembler and loader) toolchain.
      	(spe_init_builtins): Add two assertions to prevent ICE if attempt is
      	made to define a built-in function that has been disabled.
      	(paired_init_builtins): Add assertion to prevent ICE if attempt is
      	made to define a built-in function that has been disabled.
      	(altivec_init_builtins): Add comment explaining why definition
      	of the DST built-in functions is not preceded by an assertion
      	check.  Add assertions to prevent ICE if attempts are made to
      	define an altivec predicate or an abs* built-in function that has
      	been disabled.
      	(htm_init_builtins): Add comment explaining why definition of the
      	htm built-in functions is not preceded by an assertion check.
      
      From-SVN: r244068
      Kelvin Nilsen committed
    • re PR tree-optimization/67955 (tree-dse does not use pointer info) · 8194635a
      	PR tree-optimizatin/67955
      	* tree-ssa-alias.c (same_addr_size_stores_p): Check offsets first.
      	Allow any SSA_VAR_P as the base objects.  Use integer_zerop.  Verify
      	the points-to solution does not include pt_null.  Use DECL_PT_UID
      	unconditionally.
      
      	PR tree-optimization/67955
      	* gcc.dg/tree-ssa/ssa-dse-28.c: New test.
      
      From-SVN: r244067
      Jeff Law committed
    • re PR c++/77545 (ICE on valid C++11 code: in potential_constant_expression_1, at… · baf9ebc8
      re PR c++/77545 (ICE on valid C++11 code: in potential_constant_expression_1, at cp/constexpr.c:5480)
      
      	PR c++/77545
      	PR c++/77284
      	* constexpr.c (potential_constant_expression_1): Handle CLEANUP_STMT.
      
      	* g++.dg/cpp0x/range-for32.C: New test.
      	* g++.dg/cpp0x/range-for33.C: New test.
      
      From-SVN: r244062
      Marek Polacek committed
    • C FE: implement fix-it hint for -Wmissing-braces · 5dd9a9d0
      gcc/c/ChangeLog:
      	* c-parser.c (c_parser_declaration_or_fndef): Create a
      	rich_location at init_loc and parse it to start_init.
      	(last_init_list_comma): New global.
      	(c_parser_braced_init): Update last_init_list_comma when parsing
      	commas.  Pass it to pop_init_level.  Pass location of closing
      	brace to pop_init_level.
      	(c_parser_postfix_expression_after_paren_type): Create a
      	rich_location at type_loc and parse it to start_init.
      	(c_parser_omp_declare_reduction): Likewise for loc.
      	* c-tree.h (start_init): Add rich_location * param.
      	(pop_init_level): Add location_t param.
      	* c-typeck.c (struct initializer_stack): Add field
      	"missing_brace_richloc".
      	(start_init): Add richloc param, use it to initialize
      	the stack node's missing_brace_richloc.
      	(last_init_list_comma): New decl.
      	(finish_implicit_inits): Pass last_init_list_comma to
      	pop_init_level.
      	(push_init_level): When finding missing open braces, add fix-it
      	hints to the richloc.
      	(pop_init_level): Add "insert_before" param and pass it
      	when calling pop_init_level.  Add fixits about missing
      	close braces to any richloc.  Use the richloc for the
      	-Wmissing-braces warning.
      	(set_designator): Pass last_init_list_comma to pop_init_level.
      	(process_init_element): Likewise.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/Wmissing-braces-fixits.c: New test case.
      
      From-SVN: r244061
      David Malcolm committed