1. 28 Feb, 2018 2 commits
  2. 27 Feb, 2018 18 commits
    • Avoid including <string> directly. · 2211eff6
      From-SVN: r258046
      Martin Sebor committed
    • PR c++/83871 - wrong code for attribute const and pure on distinct template specializations · d4cfd486
      PR c++/83871 - wrong code for attribute const and pure on distinct template specializations
      PR c++/83503 - [8 Regression] bogus -Wattributes for const and pure on function template specialization
      
      gcc/ChangeLog:
      
      	PR c++/83871
      	* gcc/doc/invoke.texi (-Wmissing-attributes): New option.
      	* gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
      
      gcc/c-family/ChangeLog:
      
      	PR c++/83871
      	* c.opt (-Wmissing-attributes): New option.
      
      gcc/cp/ChangeLog:
      
      	PR c++/83871
      	PR c++/83503
      	* cp-tree.h (warn_spec_missing_attributes): New function.
      	((check_explicit_specialization): Add an argument.  Call the above
      	function.
      	* decl.c (duplicate_decls): Avoid applying primary function template's
      	attributes to its explicit specializations.
      	cp/pt.c (warn_spec_missing_attributes): Define.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/83871
      	PR c++/83503
      	* g++.dg/Wmissing-attributes.C: New test.
      	* g++.dg/ext/attr-const-pure.C: New test.
      	* g++.dg/ext/attr-const.C: New test.
      	* g++.dg/ext/attr-deprecated-2.C: New test.
      	* g++.dg/ext/attr-malloc-2.C: New test.
      	* g++.dg/ext/attr-malloc.C: New test.
      	* g++.dg/ext/attr-noinline-2.C: New test.
      	* g++.dg/ext/attr-noinline.C: New test.
      	* g++.dg/ext/attr-nonnull.C: New test.
      	* g++.dg/ext/attr-noreturn-2.C: New test.
      	* g++.dg/ext/attr-noreturn.C: New test.
      	* g++.dg/ext/attr-nothrow-2.C: New test.
      	* g++.dg/ext/attr-nothrow.C: New test.
      	* g++.dg/ext/attr-optimize.C: New test.
      	* g++.dg/ext/attr-pure.C: New test.
      	* g++.dg/ext/attr-returns-nonnull.C: New test.
      	* g++.dg/ext/attr-warning.C: New test.
      
      From-SVN: r258045
      Martin Sebor committed
    • PR translation/84207 - Hard coded plural in gimple-fold.c · 1c89478a
      gcc/ChangeLog:
      
      	PR translation/84207
      	* diagnostic-core.h (warning_n, error_n, inform_n): Change
      	n argument to unsigned HOST_WIDE_INT.
      	* diagnostic.c (warning_n, error_n, inform_n): Ditto.
      	(diagnostic_n_impl): Ditto.  Handle arguments in excess of LONG_MAX.
      	* gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
      	* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
      
      From-SVN: r258044
      Martin Sebor committed
    • PR c++/71546 - lambda init-capture with qualified-id. · 76bd270a
      	* parser.c (cp_parser_lambda_introducer): Clear scope after
      	each lambda capture.
      
      From-SVN: r258043
      Håkon Sandsmark committed
    • [PR c++/84426] ICE after conflicting member decl · 10b5c982
      https://gcc.gnu.org/ml/gcc-patches/2018-02/msg01529.html
      	PR c++/84426
      	* name-lookup.h (get_member_slot): Rename ...
      	(find_member_slot): ... here.
      	(add_member_slot): New.
      	* name-lookup.c (member_vec_linear_search): No need to check for
      	NULL slot.
      	(get_member_slot): Rename ...
      	(find_member_slot): ... here.  Don't add slot for incomplete class.
      	(add_member_slot): New.
      	* class.c (add_method): Adjust get_member_slot rename.  Bail out
      	if push_class_level_binding fails.  Create slot and grok
      	properties once we're committed to insertion.
      
      	PR c++/84426
      	* g++.dg/lookup/pr84426.C: New.
      
      From-SVN: r258042
      Nathan Sidwell committed
    • * cp-tree.h: Adjust comment. · 7f7e718d
      From-SVN: r258040
      Jason Merrill committed
    • PR c++/84489 - dependent default template argument · e8ef9fdf
      	* pt.c (type_unification_real): Handle early substitution failure.
      
      From-SVN: r258039
      Jason Merrill committed
    • re PR tree-optimization/84512 (Missed optimization: should be precalculated in compile-time) · b1ddb654
      2018-02-27  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/84512
      	* tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
      	Do not use the estimate returned from record_stmt_cost for
      	the scalar iteration cost but sum properly using add_stmt_cost.
      
      	* gcc.dg/tree-ssa/pr84512.c: New testcase.
      
      From-SVN: r258036
      Richard Biener committed
    • re PR libgomp/84466 (libgomp.graphite/force-parallel-8.c fails starting with r257723) · c16d3e3c
      2018-02-27  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/84466
      	* graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
      	Adjust last change to less strictly validate use operands.
      
      From-SVN: r258035
      Richard Biener committed
    • Make groups more generic (PR gcov-profile/84548). · e59b5e24
      2018-02-27  Martin Liska  <mliska@suse.cz>
      
      	PR gcov-profile/84548
      	* gcov.c (process_file): Allow partial overlap and consider it
      	also as group functions.
      	(output_lines): Properly calculate range of lines for a group.
      2018-02-27  Martin Liska  <mliska@suse.cz>
      
      	PR gcov-profile/84548
      	* g++.dg/gcov/pr84548.C: New test.
      
      From-SVN: r258033
      Martin Liska committed
    • Implement the missing bits of LWG 2769 · 23c3a059
      * include/std/any (any_cast(const any&)): Add static_assert.
      (any_cast(any&)): Likewise.
      (any_cast(any&&)): Likewise, and remove the handling
      for copyable-but-not-movable type.
      * testsuite/20_util/any/misc/any_cast.cc: Adjust.
      * testsuite/20_util/any/misc/any_cast_neg.cc: Likewise, and
      add new tests.
      
      From-SVN: r258031
      Ville Voutilainen committed
    • re PR target/84575 (gcc.target/i386/pr84309.c fail) · 2be4b342
      	PR target/84575
      	* gcc.target/i386/pr84309.c: Add -mno-avx2 to dg-options.
      
      From-SVN: r258030
      Jakub Jelinek committed
    • Fix formatting of -ftime-report. · ea2cd1c2
      2018-02-27  Martin Liska  <mliska@suse.cz>
      
      	* timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
      	'ggc' suffixes.  Change first column width.
      	(timer::print): Fix formatting of the column.
      
      From-SVN: r258029
      Martin Liska committed
    • [IEPM] don't preserve lexical blocks just for debug inline markers · 9893273d
      This patch stops preserving scope blocks just because they are inlined
      function scopes, when cleaning up unused scope blocks.  This change
      was introduced along with IEPM, but it preserved lots of blocks, and
      output debug information for them, although no code from the inlined
      function remained after optimization.
      
      The additional preserved blocks took up compile-time memory, and
      significant disk space and link time, in some cases more than 25%.
      This is deemed excessive, compared with the reasonably small benefit
      of allowing one to single-step into an inlined function using a
      view-capable debugger.
      
      There was another way of marking inlined function scopes as unused,
      based on the markers referencing them during stmt scanning, but that
      still preserved too much.
      
      So, this patch restores the pre-IEPM logic of preservation of scopes.
      Should a scope block referenced by an inline entry marker be found to
      be unused in remove_unused_scope_block_p, the marker will be cleaned
      up right after that, in clear_unused_block_pointer, so we won't keep
      a dangling reference to a dropped block.
      
      for  gcc/ChangeLog
      
      	* tree-ssa-live.c (remove_unused_scope_block_p): Do not
      	preserve inline entry blocks for the sake of debug inline
      	entry point markers alone.
      	(remove_unused_locals): Suggest in comments a better place to
      	force the preservation of inline entry blocks that are
      	otherwise unused, but do not preserve them.
      
      From-SVN: r258026
      Alexandre Oliva committed
    • PR c++/84560 - ICE capturing multi-dimensional VLA. · ed75f594
      	* tree.c (array_of_runtime_bound_p): False if the element is
      	variably-modified.
      
      From-SVN: r258023
      Jason Merrill committed
    • PR c++/84441 - ICE with base initialized from ?: · a2444ce9
      	* call.c (unsafe_copy_elision_p): Handle COND_EXPR.
      
      From-SVN: r258022
      Jason Merrill committed
    • PR c++/84520 - ICE with generic lambda in NSDMI. · ab5f26bb
      	* lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
      	'this' in a generic lambda instantiation.
      
      From-SVN: r258021
      Jason Merrill committed
    • Daily bump. · d36a19c7
      From-SVN: r258020
      GCC Administrator committed
  3. 26 Feb, 2018 20 commits
    • * es.po, sv.po: Update. · e64e6793
      From-SVN: r258016
      Joseph Myers committed
    • PR c++/84559 - ICE with constexpr VLA. · 8e9589bd
      	* constexpr.c (ensure_literal_type_for_constexpr_object): Check
      	for constexpr variable with VLA type.
      
      From-SVN: r258015
      Jason Merrill committed
    • re PR c++/84558 (ICE with invalid constexpr constructor) · c2236b9b
      	PR c++/84558
      	* constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
      	a valid constant initializer.  Formatting fixes.
      
      	* g++.dg/cpp1y/pr84558.C: New test.
      
      From-SVN: r258014
      Jakub Jelinek committed
    • re PR c++/84540 (ICE with alignas in variadic template) · 08735f53
      /cp
      2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/84540
      	* pt.c (tsubst_attributes): Handle correctly tsubst_attribute
      	returning NULL_TREE.
      	(apply_late_template_attributes): Likewise.
      
      /testsuite
      2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/84540
      	* g++.dg/cpp0x/alignas14.C: New.
      	* g++.dg/cpp0x/alignas15.C: Likewise.
      
      From-SVN: r258012
      Paolo Carlini committed
    • re PR c++/84557 (ICE with invalid firstprivate variable) · 2bb03eb7
      	PR c++/84557
      	* parser.c (cp_parser_omp_var_list_no_open): Only call
      	cp_parser_lookup_name_simple on names satisfying identifier_p.
      	(cp_parser_oacc_routine): Likewise.
      
      	* g++.dg/gomp/pr84557.C: New test.
      
      From-SVN: r258011
      Jakub Jelinek committed
    • re PR debug/83917 (with -mcall-ms2sysv-xlogues, stepping into x86 tail-call… · e5868319
      re PR debug/83917 (with -mcall-ms2sysv-xlogues, stepping into x86 tail-call restore stub gives bad backtrace)
      
      	PR debug/83917
      	* config/i386/i386-asm.h (PACKAGE_VERSION, PACKAGE_NAME,
      	PACKAGE_STRING, PACKAGE_TARNAME, PACKAGE_URL): Undefine between
      	inclusion of auto-target.h and auto-host.h.
      	(USE_GAS_CFI_DIRECTIVES): Define if not defined already based on
      	__GCC_HAVE_DWARF2_CFI_ASM.
      	(cfi_startproc, cfi_endproc, cfi_adjust_cfa_offset,
      	cfi_def_cfa_register, cfi_def_cfa, cfi_register, cfi_offset, cfi_push,
      	cfi_pop): Define.
      	* config/i386/cygwin.S: Don't include auto-host.h here, just
      	define USE_GAS_CFI_DIRECTIVES to 1 or 0 and include i386-asm.h.
      	(cfi_startproc, cfi_endproc, cfi_adjust_cfa_offset,
      	cfi_def_cfa_register, cfi_register, cfi_push, cfi_pop): Remove.
      	* config/i386/resms64fx.h: Add cfi_* directives.
      	* config/i386/resms64x.h: Likewise.
      
      From-SVN: r258010
      Jakub Jelinek committed
    • PR c++/84551 - ICE with concepts and -g. · 106b15ea
      	* parser.c (add_debug_begin_stmt): Do nothing in a concept.
      
      From-SVN: r258009
      Jason Merrill committed
    • re PR c++/84325 (internal compiler error, in cxx_eval_constant_expression gcc/cp/constexpr.c:4740) · b671df81
      	PR c++/84325
      	* tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
      	non-types.
      
      	* g++.dg/cpp1z/pr84325.C: New test.
      
      From-SVN: r258008
      Marek Polacek committed
    • builtins-3.c: Move vec_neg builtin tests to Power 8 test file. · 40b864f1
      gcc/testsuite/ChangeLog:
      
      2018-02-26  Carl Love  <cel@us.ibm.com>
      	* gcc.target/powerpc/builtins-3.c: Move vec_neg builtin tests to
      	Power 8 test file.
      	* gcc.target/powerpc/builtins-3-p8.c: Add vec_neg builtin tests.
      	* gcc.target/powerpc/fold-vec-neg-char.c(dg-options): Add -mcpu=power8.
      	* gcc.target/powerpc/fold-vec-neg-floatdouble.c(dg-options): Add
      	-mcpu=power8.
      	* gcc.target/powerpc/fold-vec-neg-int.c(dg-options): Remove file.
      	* gcc.target/powerpc/fold-vec-neg-short.c(dg-options): Add
      	-mcpu=power8.
      
      From-SVN: r258006
      Carl Love committed
    • i386: Update comments for ix86_output_indirect_jmp · fc435836
      Revision 257992 removed the bool argument from ix86_output_indirect_jmp.
      Update comments to reflect it.
      
      	* config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
      
      From-SVN: r258005
      H.J. Lu committed
    • PR c++/84447 - ICE with deleted inherited ctor with default arg. · 18101e73
      	* call.c (build_over_call): Handle deleted functions in one place.
      
      From-SVN: r258003
      Jason Merrill committed
    • PR c++/81589 - error with is_trivially_constructible · f18f8ade
      	* g++.dg/ext/is_trivially_constructible6.C: New.
      
      From-SVN: r258002
      Jason Merrill committed
    • i386: Add TARGET_INDIRECT_BRANCH_REGISTER · c2c601b2
      For
      
      ---
      struct C {
        virtual ~C();
        virtual void f();
      };
      
      void
      f (C *p)
      {
        p->f();
        p->f();
      }
      ---
      
      -mindirect-branch=thunk-extern -O2 on x86-64 GNU/Linux generates:
      
      _Z1fP1C:
      .LFB0:
              .cfi_startproc
              pushq   %rbx
              .cfi_def_cfa_offset 16
              .cfi_offset 3, -16
              movq    (%rdi), %rax
              movq    %rdi, %rbx
              jmp     .LIND1
      .LIND0:
              pushq   16(%rax)
              jmp     __x86_indirect_thunk
      .LIND1:
              call    .LIND0
              movq    (%rbx), %rax
              movq    %rbx, %rdi
              popq    %rbx
              .cfi_def_cfa_offset 8
              movq    16(%rax), %rax
              jmp     __x86_indirect_thunk_rax
              .cfi_endproc
      
      x86-64 is supposed to have asynchronous unwind tables by default, but
      there is nothing that reflects the change in the (relative) frame
      address after .LIND0.  That region really has to be moved outside of
      the .cfi_startproc/.cfi_endproc bracket.
      
      This patch adds TARGET_INDIRECT_BRANCH_REGISTER to force indirect
      branch via register whenever -mindirect-branch= is used.  Now,
      -mindirect-branch=thunk-extern -O2 on x86-64 GNU/Linux generates:
      
      _Z1fP1C:
      .LFB0:
      	.cfi_startproc
      	pushq	%rbx
      	.cfi_def_cfa_offset 16
      	.cfi_offset 3, -16
      	movq	(%rdi), %rax
      	movq	%rdi, %rbx
      	movq	16(%rax), %rax
      	call	__x86_indirect_thunk_rax
      	movq	(%rbx), %rax
      	movq	%rbx, %rdi
      	popq	%rbx
      	.cfi_def_cfa_offset 8
      	movq	16(%rax), %rax
      	jmp	__x86_indirect_thunk_rax
      	.cfi_endproc
      
      so that "-mindirect-branch=thunk-extern" is equivalent to
      "-mindirect-branch=thunk-extern -mindirect-branch-register", which is
      used by Linux kernel.
      
      gcc/
      
      	PR target/84039
      	* config/i386/constraints.md (Bs): Replace
      	ix86_indirect_branch_register with
      	TARGET_INDIRECT_BRANCH_REGISTER.
      	(Bw): Likewise.
      	* config/i386/i386.md (indirect_jump): Likewise.
      	(tablejump): Likewise.
      	(*sibcall_memory): Likewise.
      	(*sibcall_value_memory): Likewise.
      	Peepholes of indirect call and jump via memory: Likewise.
      	(*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
      	(*sibcall_value_GOT_32): Likewise.
      	* config/i386/i386.opt: Likewise.
      	* config/i386/predicates.md (indirect_branch_operand): Likewise.
      	(GOT_memory_operand): Likewise.
      	(call_insn_operand): Likewise.
      	(sibcall_insn_operand): Likewise.
      	(GOT32_symbol_operand): Likewise.
      	* config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
      
      gcc/testsuite/
      
      	PR target/84039
      	* gcc.target/i386/indirect-thunk-1.c: Updated.
      	* gcc.target/i386/indirect-thunk-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-5.c: Likewise.
      	* gcc.target/i386/indirect-thunk-6.c: Likewise.
      	* gcc.target/i386/indirect-thunk-7.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-1.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-5.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-6.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-7.c: Likewise.
      	* gcc.target/i386/indirect-thunk-bnd-1.c: Likewise.
      	* gcc.target/i386/indirect-thunk-bnd-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-bnd-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-bnd-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-1.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-5.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-6.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-7.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-1.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-5.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-6.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-7.c: Likewise.
      	* gcc.target/i386/ret-thunk-9.c: Likewise.
      	* gcc.target/i386/ret-thunk-10.c: Likewise.
      	* gcc.target/i386/ret-thunk-11.c: Likewise.
      	* gcc.target/i386/ret-thunk-12.c: Likewise.
      	* gcc.target/i386/ret-thunk-13.c: Likewise.
      	* gcc.target/i386/ret-thunk-14.c: Likewise.
      	* gcc.target/i386/ret-thunk-15.c: Likewise.
      
      From-SVN: r258001
      H.J. Lu committed
    • Fix typo · 94e16982
      From-SVN: r257999
      Eric Botcazou committed
    • Re-add test. · e6799923
      From-SVN: r257998
      Eric Botcazou committed
    • Remove bogus test. · 70a1af61
      From-SVN: r257997
      Eric Botcazou committed
    • re PR rtl-optimization/83496 (wrong code generated with -Os -mbranch-cost=1) · f41881a4
      	PR rtl-optimization/83496
      	* reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
      	booleans to RTXes.  Call fix_reg_dead_note on every non-null element.
      	(steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
      	redundant insn, if any.
      	(relax_delay_slots): Likewise.
      	(update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
      
      From-SVN: r257996
      Eric Botcazou committed
    • Make fix for PR 83965 handle SLP reduction chains · d99dcb77
      This patch prevents pattern-matching of fold-left SLP reduction chains,
      which the previous patch for 83965 didn't handle properly.  It only
      stops the last statement in the group from being matched, but that's
      enough to cause the group to be dissolved later.
      
      A better fix would be to put all the information about the reduction
      on the the first statement in the reduction chain, so that every
      statement in the group can tell what the group is doing.  That doesn't
      seem like stage 4 material though.
      
      2018-02-26  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	PR tree-optimization/83965
      	* tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
      	that grouped statements are part of a reduction chain.  Return
      	true if the statement is not marked as a reduction itself but
      	is part of a group.
      	(vect_recog_dot_prod_pattern): Don't check whether the statement
      	is part of a group here.
      	(vect_recog_sad_pattern): Likewise.
      	(vect_recog_widen_sum_pattern): Likewise.
      
      gcc/testsuite/
      	PR tree-optimization/83965
      	* gcc.dg/vect/pr83965-2.c: New test.
      
      From-SVN: r257995
      Richard Sandiford committed
    • [testsuite] Add missing function decl to regs-arg-size.c · 9992661c
      2018-02-26  Tom de Vries  <tom@codesourcery.com>
      
      	* gcc.c-torture/compile/regs-arg-size.c (swprintf): Declare.
      
      From-SVN: r257994
      Tom de Vries committed
    • re PR debug/84545 (FAIL: g++.dg/debug/pr44182.C -gdwarf-2 -O2 (test for excess errors)) · 24086c20
      	PR debug/84545
      	* final.c (rest_of_clean_state): Also look for calls inside sequences.
      
      From-SVN: r257993
      Eric Botcazou committed