gcc.git
6 years agocombine: Fix PR84780 (more LOG_LINKS trouble)
Segher Boessenkool [Mon, 12 Mar 2018 15:26:16 +0000 (16:26 +0100)]
combine: Fix PR84780 (more LOG_LINKS trouble)

There still are situations where we have stale LOG_LINKS.  This causes
combine to try two-insn combinations I2->I3 where the register set by
I2 is used before I3 as well.  Not good.

This patch fixes it by checking for this situation in can_combine_p
(similar to what we already do for three and four insn combinations).

From-SVN: r258452

6 years agoPR c++/84355 - ICE with deduction for member class template.
Jason Merrill [Mon, 12 Mar 2018 14:40:45 +0000 (10:40 -0400)]
PR c++/84355 - ICE with deduction for member class template.

* pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
CLASS_PLACEHOLDER_TEMPLATE.

From-SVN: r258451

6 years agoAdd a testcase for PR 84821
H.J. Lu [Mon, 12 Mar 2018 13:33:38 +0000 (13:33 +0000)]
Add a testcase for PR 84821

This was introduced by r258390 and fixed by r258415.

* g++.dg/pr84821.C: New test.

From-SVN: r258449

6 years agoAdd a testcase for PR 84799
H.J. Lu [Mon, 12 Mar 2018 13:32:44 +0000 (13:32 +0000)]
Add a testcase for PR 84799

This was introduced by r258390 and fixed by r258415.

* gcc.dg/pr84799.c: New test.

From-SVN: r258448

6 years agoPR c++/84802 - ICE capturing uninstantiated class.
Jason Merrill [Mon, 12 Mar 2018 12:58:38 +0000 (08:58 -0400)]
PR c++/84802 - ICE capturing uninstantiated class.

* lambda.c (build_capture_proxy): Call complete_type.

From-SVN: r258447

6 years agore PR tree-optimization/84803 (ICE from ifcvt_memrefs_wont_trap with -O3)
Richard Biener [Mon, 12 Mar 2018 12:32:28 +0000 (12:32 +0000)]
re PR tree-optimization/84803 (ICE from ifcvt_memrefs_wont_trap with -O3)

2018-03-12  Richard Biener  <rguenther@suse.de>

PR tree-optimization/84803
* tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
for refs DR analysis didn't process.

* gcc.dg/torture/pr84803.c: New testcase.

From-SVN: r258446

6 years agore PR c++/84813 (internal compiler error: Segmentation fault with lambdas and constex...
Jakub Jelinek [Mon, 12 Mar 2018 09:02:36 +0000 (10:02 +0100)]
re PR c++/84813 (internal compiler error: Segmentation fault with lambdas and constexpr variables)

PR c++/84813
* g++.dg/debug/pr84813.C: New test.

From-SVN: r258445

6 years agore PR tree-optimization/84777 (-Os inhibits all vectorization)
Richard Biener [Mon, 12 Mar 2018 08:45:54 +0000 (08:45 +0000)]
re PR tree-optimization/84777 (-Os inhibits all vectorization)

2018-03-12  Richard Biener  <rguenther@suse.de>

PR tree-optimization/84777
* tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
force-vectorize loops ignore whether we are optimizing for size.

From-SVN: r258444

6 years ago[NDS32] Implement TARGET_MD_ASM_ADJUST hook.
Chung-Ju Wu [Mon, 12 Mar 2018 01:29:34 +0000 (01:29 +0000)]
[NDS32] Implement TARGET_MD_ASM_ADJUST hook.

gcc/
* config/nds32/nds32.c (nds32_md_asm_adjust): New function.
(TARGET_MD_ASM_ADJUST): Define.

From-SVN: r258443

6 years ago[NDS32] Refine prologue and epilogue code generation.
Monk Chiang [Mon, 12 Mar 2018 01:21:57 +0000 (01:21 +0000)]
[NDS32] Refine prologue and epilogue code generation.

gcc/
* config/nds32/nds32.c (nds32_compute_stack_frame,
nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
* config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
* config/nds32/nds32.md (prologue, epilogue): Use macro
NDS32_V3PUSH_AVAILABLE_P to do checking.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>
Co-Authored-By: Kito Cheng <kito.cheng@gmail.com>
From-SVN: r258442

6 years agoDaily bump.
GCC Administrator [Mon, 12 Mar 2018 00:16:14 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r258441

6 years agore PR fortran/84546 (Bad sourced allocation of CLASS(*) with source with CLASS(*...
Paul Thomas [Sun, 11 Mar 2018 22:25:11 +0000 (22:25 +0000)]
re PR fortran/84546 (Bad sourced allocation of CLASS(*) with source with CLASS(*) component)

2018-03-11  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/84546
* trans-array.c (structure_alloc_comps): Make sure that the
vptr is copied and that the unlimited polymorphic _len is used
to compute the size to be allocated.
* trans-expr.c (gfc_get_class_array_ref): If unlimited, use the
unlimited polymorphic _len for the offset to the element.
(gfc_copy_class_to_class): Set the new 'unlimited' argument.
* trans.h : Add the boolean 'unlimited' to the prototype.

2018-03-11  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/84546
* gfortran.dg/unlimited_polymorphic_29.f90 : New test.

From-SVN: r258438

6 years agore PR fortran/83939 (Constraint C1290 (elemental function cannot be allocatable)...
Steven G. Kargl [Sun, 11 Mar 2018 21:39:15 +0000 (21:39 +0000)]
re PR fortran/83939 (Constraint C1290 (elemental function cannot be allocatable) not enforced)

2018-03-11  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/83939
* resolve.c (resolve_fl_procedure): Enforce F2018:C15100.

2018-03-11  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/83939
* gfortran.dg/pr83939.f90

From-SVN: r258437

6 years agocheck.c (gfc_check_kill): Check pid and sig are scalar.
Steven G. Kargl [Sun, 11 Mar 2018 21:34:40 +0000 (21:34 +0000)]
check.c (gfc_check_kill): Check pid and sig are scalar.

2018-03-11  Steven G. Kargl  <kargls@gcc.gnu.org>

* check.c (gfc_check_kill):  Check pid and sig are scalar.
(gfc_check_kill_sub): Restrict kind to 4 and 8.
* intrinsic.c (add_function): Sort keyword list.  Add pid and sig
keywords for KILL.  Remove redundant *back="back" in favor of the
original *bck="back".
(add_subroutines): Sort keyword list.  Add pid and sig keywords
for KILL.
* intrinsic.texi: Fix documentation to consistently use pid and sig.
* iresolve.c (gfc_resolve_kill): Kind can only be 4 or 8.  Choose the
correct function.
(gfc_resolve_rename_sub): Add comment.

From-SVN: r258436

6 years agore PR fortran/66128 (ICE for some intrinsics with zero sized array parameter)
Thomas Koenig [Sun, 11 Mar 2018 20:28:00 +0000 (20:28 +0000)]
re PR fortran/66128 (ICE for some intrinsics with zero sized array parameter)

2018-03-11  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/66128
* simplify.c (simplify_transformation): Return default result for
empty array argument.
(gfc_simplify_all): Remove special-case handling for zerosize.
(gfc_simplify_any): Likewise.
(gfc_simplify_count): Likewise.
(gfc_simplify_iall): Likewise.
(gfc_simplify_iany): Likewise.
(gfc_simplify_iparity): Likewise.
(gfc_simplify_minval): Likewise.
(gfc_simplify_maxval): Likewise.
(gfc_simplify_norm2): Likewise.
(gfc_simplify_product): Likewise.
(gfc_simplify_sum): Likewise.

2018-03-11  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/66128
* gfortran.dg/zero_sized_9.f90: New test.

From-SVN: r258435

6 years agore PR debug/58150 (debug info about definition of enum class not emitted if the decla...
Jakub Jelinek [Sun, 11 Mar 2018 16:50:08 +0000 (17:50 +0100)]
re PR debug/58150 (debug info about definition of enum class not emitted if the declaration was already used in a class)

PR debug/58150
* dwarf2out.c (gen_enumeration_type_die): Don't guard adding
DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
but on TYPE_SIZE.  Don't do anything for ENUM_IS_OPAQUE if not creating
a new die.  Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE.  Guard
addition of most attributes on !orig_type_die or the attribute not
being present already.  Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.

* g++.dg/debug/dwarf2/enum2.C: New test.

From-SVN: r258434

6 years ago[NDS32] Add new option -mvh.
Kito Cheng [Sun, 11 Mar 2018 12:21:23 +0000 (12:21 +0000)]
[NDS32] Add new option -mvh.

gcc/
* config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
__NDS32_VH__ macro.
* config/nds32/nds32.opt (mvh): New option.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>
From-SVN: r258427

6 years ago[NDS32] Add new function nds32_cpu_cpp_builtins and use it for TARGET_CPU_CPP_BUILTINS.
Kito Cheng [Sun, 11 Mar 2018 08:42:30 +0000 (08:42 +0000)]
[NDS32] Add new function nds32_cpu_cpp_builtins and use it for TARGET_CPU_CPP_BUILTINS.

gcc/
* config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
function.
* config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
* config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
definition.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>
From-SVN: r258426

6 years ago[NDS32] Implement strlensi pattern.
Kito Cheng [Sun, 11 Mar 2018 08:24:33 +0000 (08:24 +0000)]
[NDS32] Implement strlensi pattern.

gcc/
* config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
function.
* config/nds32/nds32-multiple.md (strlensi): New pattern.
* config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>
From-SVN: r258425

6 years ago[NDS32] Add intrinsic function for ffb, ffmism and flmism.
Monk Chiang [Sun, 11 Mar 2018 07:48:48 +0000 (07:48 +0000)]
[NDS32] Add intrinsic function for ffb, ffmism and flmism.

gcc/
* config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
UNSPEC_FFMISM and UNSPEC_FLMISM.
* config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
for ffb, ffmism and flmism.
* config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
(unspec_ffmism): Ditto.
(unspec_flmism): Ditto.
(nds32_expand_builtin_impl): Check if string extension is available.
* config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>
Co-Authored-By: Kito Cheng <kito.cheng@gmail.com>
From-SVN: r258424

6 years agoDaily bump.
GCC Administrator [Sun, 11 Mar 2018 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r258423

6 years agore PR fortran/84734 (Compiling codes with insane array dimensions gives an ICE after...
Steven G. Kargl [Sat, 10 Mar 2018 18:34:12 +0000 (18:34 +0000)]
re PR fortran/84734 (Compiling codes with insane array dimensions gives an ICE after r257971)

2018-03-09  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/84734
* arith.c (check_result, eval_intrinsic):  If result overflows, pass
the expression up the chain instead of a NULL pointer.

2018-03-09  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/84734
* gfortran.dg/pr84734.f90: New test.

From-SVN: r258416

6 years agorevert: re PR target/83712 ("Unable to find a register to spill" when compiling for...
Vladimir Makarov [Sat, 10 Mar 2018 16:32:21 +0000 (16:32 +0000)]
revert: re PR target/83712 ("Unable to find a register to spill" when compiling for thumb1)

2018-03-10  Vladimir Makarov  <vmakarov@redhat.com>

Reverting patch:
2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>

PR target/83712
* lra-assigns.c (assign_by_spills): Return a flag of reload
assignment failure.  Do not process the reload assignment
failures.  Do not spill other reload pseudos if they has the same
reg class.
(lra_assign): Add a return arg.  Set up from the result of
assign_by_spills call.
(find_reload_regno_insns, lra_split_hard_reg_for): New functions.
* lra-constraints.c (split_reg): Add a new arg.  Use it instead of
usage_insns if it is not NULL.
(spill_hard_reg_in_range): New function.
(split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
* lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
function prototypes.
(lra_assign): Change prototype.
* lra.c (lra): Add code to deal with fails by splitting hard reg
live ranges.

From-SVN: r258415

6 years agoi386: Fix a typo: Enforcment -> Enforcement
H.J. Lu [Sat, 10 Mar 2018 15:57:10 +0000 (15:57 +0000)]
i386: Fix a typo: Enforcment -> Enforcement

PR target/84807
* config/i386/i386.opt: Replace Enforcment with Enforcement.

From-SVN: r258414

6 years agotrans.c (node_has_volatile_full_access): Consider only entities for objects.
Eric Botcazou [Sat, 10 Mar 2018 10:11:29 +0000 (10:11 +0000)]
trans.c (node_has_volatile_full_access): Consider only entities for objects.

* gcc-interface/trans.c (node_has_volatile_full_access) <N_Identifier>:
Consider only entities for objects.

From-SVN: r258412

6 years ago[IEPM] [PR debug/84620] use constant form for DW_AT_GNU_entry_view
Alexandre Oliva [Sat, 10 Mar 2018 06:42:40 +0000 (06:42 +0000)]
[IEPM] [PR debug/84620] use constant form for DW_AT_GNU_entry_view

When outputting entry views in symbolic mode, we used to use a lbl_id,
but that outputs the view as an addr, perhaps even in an indirect one,
which is all excessive and undesirable for a small assembler-computed
constant.

Introduce a new value class for symbolic views, so that we can output
the labels as constant data, using as narrow forms as possible, but
wide enough for any symbolic views output in the compilation.  We
don't know exactly where the assembler will reset views, but we count
the symbolic views since known reset points and use that as an upper
bound for view numbers.

Ideally, we'd use uleb128, but then the compiler would have to defer
.debug_info offset computation to the assembler.  I'm not going there
for now, so a symbolic uleb128 assembler constant in an attribute is
not something GCC can deal with ATM.

for  gcc/ChangeLog

PR debug/84620
* dwarf2out.h (dw_val_class): Add dw_val_class_symview.
(dw_val_node): Add val_symbolic_view.
* dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
(symview_upper_bound): New.
(new_line_info_table): Initialize symviews_since_reset.
(dwarf2out_source_line): Count symviews_since_reset and set
symview_upper_bound.
(dw_val_equal_p): Handle symview.
(add_AT_symview): New.
(print_dw_val): Handle symview.
(attr_checksum, attr_checksum_ordered): Likewise.
(same_dw_val_p, size_of_die): Likewise.
(value_format, output_die): Likewise.
(add_high_low_attributes): Use add_AT_symview for entry_view.
(dwarf2out_finish): Reset symview_upper_bound, clear
zero_view_p.

From-SVN: r258411

6 years agoPR c++/84770 - ICE with typedef and parameter pack.
Jason Merrill [Sat, 10 Mar 2018 03:34:37 +0000 (22:34 -0500)]
PR c++/84770 - ICE with typedef and parameter pack.

* pt.c (verify_unstripped_args_1): Split out from
verify_unstripped_args.

From-SVN: r258408

6 years agoPR c++/84785 - ICE with alias template and default targs.
Jason Merrill [Sat, 10 Mar 2018 03:34:29 +0000 (22:34 -0500)]
PR c++/84785 - ICE with alias template and default targs.

* pt.c (type_unification_real): Set processing_template_decl if
saw_undeduced == 1.

From-SVN: r258407

6 years agoPR c++/84752 - ICE with capture of constexpr array.
Jason Merrill [Sat, 10 Mar 2018 03:34:23 +0000 (22:34 -0500)]
PR c++/84752 - ICE with capture of constexpr array.

* call.c (standard_conversion): Set rvaluedness_matches_p on the
identity conversion under ck_lvalue.

From-SVN: r258406

6 years agoDaily bump.
GCC Administrator [Sat, 10 Mar 2018 00:16:13 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r258405

6 years ago2018-03-09 Paolo Carlini <paolo.carlini@oracle.com>
Paolo Carlini [Fri, 9 Mar 2018 23:05:51 +0000 (23:05 +0000)]
2018-03-09  Paolo Carlini  <paolo.carlini@oracle.com>

* Fix wrong date in ChangeLog entry.

From-SVN: r258402

6 years agore PR c++/71169 (ICE on invalid C++ code in pop_nested_class (cp/class.c:7785))
Jason Merrill [Fri, 9 Mar 2018 23:03:06 +0000 (18:03 -0500)]
re PR c++/71169 (ICE on invalid C++ code in pop_nested_class (cp/class.c:7785))

/cp
2018-03-09  Jason Merrill  <jason@redhat.com>
    Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71169
PR c++/71832
* pt.c (any_erroneous_template_args_p): New.
* cp-tree.h (any_erroneous_template_args_p): Declare it.
* parser.c (cp_parser_class_specifier_1): Use it.

/testsuite
2018-03-09  Jason Merrill  <jason@redhat.com>
    Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71169
PR c++/71832
* g++.dg/cpp0x/pr71169.C: New.
* g++.dg/cpp0x/pr71169-2.C: Likewise.
* g++.dg/cpp0x/pr71832.C: Likewise.

Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>
From-SVN: r258401

6 years agore PR target/83969 (ICE in final_scan_insn, at final.c:2997 (error: could not split...
Peter Bergner [Fri, 9 Mar 2018 22:43:59 +0000 (16:43 -0600)]
re PR target/83969 (ICE in final_scan_insn, at final.c:2997 (error: could not split insn) for powerpc targets)

gcc/
PR target/83969
* config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
Add strict argument and use it.
(rs6000_split_multireg_move): Update for new strict argument.
(mem_operand_gpr): Disallow all non-offsettable addresses.
* config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.

gcc/testsuite/
PR target/83969
* gcc.target/powerpc/pr83969.c: New test.

From-SVN: r258400

6 years agore PR target/84772 (powerpc-spe: Spurious "is used uninitialized" warning, or possibl...
Jakub Jelinek [Fri, 9 Mar 2018 22:23:14 +0000 (23:23 +0100)]
re PR target/84772 (powerpc-spe: Spurious "is used uninitialized" warning, or possibly incorrect codegen for va_arg(long double))

PR target/84772
* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
* config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.

* gcc.dg/pr84772.c: New test.

From-SVN: r258399

6 years agoPR c++/84726 - unnecessary capture of constant vars.
Jason Merrill [Fri, 9 Mar 2018 21:40:55 +0000 (16:40 -0500)]
PR c++/84726 - unnecessary capture of constant vars.

* cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
(LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
* expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
* lambda.c (is_constant_capture_proxy)
(current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
(prune_lambda_captures): New.
(finish_lambda_function): Call prune_lambda_captures.

From-SVN: r258398

6 years agore PR c++/84076 (Warning about objects through POD mistakenly claims the object is...
Jason Merrill [Fri, 9 Mar 2018 20:39:14 +0000 (21:39 +0100)]
re PR c++/84076 (Warning about objects through POD mistakenly claims the object is a pointer)

PR c++/84076
* call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
build ADDR_EXPR with REFERENCE_TYPE.
(build_over_call): For purposes of check_function_arguments, if
argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
its operand rather than the argument itself.

* g++.dg/warn/Wformat-2.C: New test.

From-SVN: r258397

6 years agore PR c++/84767 (ICE with pointer to VLA)
Jakub Jelinek [Fri, 9 Mar 2018 19:12:29 +0000 (20:12 +0100)]
re PR c++/84767 (ICE with pointer to VLA)

PR c++/84767
* tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
decl, use remap_type if we want to use the type.

* g++.dg/ext/vla18.C: New test.

From-SVN: r258395

6 years agore PR tree-optimization/84526 (ICE in generic_overlap at gcc/gimple-ssa-warn-restrict...
Martin Sebor [Fri, 9 Mar 2018 19:06:26 +0000 (19:06 +0000)]
re PR tree-optimization/84526 (ICE in generic_overlap at gcc/gimple-ssa-warn-restrict.c:927 since r257860)

gcc/ChangeLog:

PR tree-optimization/84526
* gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
Remove dead code.
(builtin_access::generic_overlap): Be prepared to handle non-array
base objects.

gcc/testsuite/ChangeLog:

PR tree-optimization/84526
* gcc.dg/Wrestrict-10.c: New test.
* gcc.dg/Wrestrict-11.c: New test.

From-SVN: r258394

6 years agore PR rtl-optimization/84682 (internal compiler error: Segmentation fault (process_ad...
Alexandre Oliva [Fri, 9 Mar 2018 18:50:56 +0000 (18:50 +0000)]
re PR rtl-optimization/84682 (internal compiler error: Segmentation fault (process_address_1))

PR rtl-optimization/84682
* lra-constraints.c (process_address_1): Check is_address flag
for address constraints.
(process_alt_operands): Likewise.
* lra.c (lra_set_insn_recog_data): Pass asm operand locs to
preprocess_constraints.
* recog.h (preprocess_constraints): Add oploc parameter.
Adjust callers.

PR rtl-optimization/84682
* gcc.dg/torture/pr84682-1.c: New.
* gcc.dg/torture/pr84682-2.c: New.
* gcc.dg/torture/pr84682-3.c: New.

From-SVN: r258393

6 years agocommit ce28919112dbb234366816ab39ce060ad45e8ca9
Ian Lance Taylor [Fri, 9 Mar 2018 18:21:42 +0000 (18:21 +0000)]
commit ce28919112dbb234366816ab39ce060ad45e8ca9
    Makefile: add internal/trace to noinst_DATA

    The internal/trace package is only imported by tests (specifically the
    tests in runtime/trace) so it must be in noinst_DATA to ensure that it
    is built before running the tests.

    This was mostly working because internal/trace has tests itself, and
    is listed in check-packages.txt before runtime/trace, so typical
    invocations of make would build internal/trace for checking purposes
    before checking runtime/trace.  But we need this change to make that
    reliable.

    Reviewed-on: https://go-review.googlesource.com/99836

From-SVN: r258392

6 years agore PR c++/84724 (internal compiler error: in single_succ_edge, at basic-block.h:339...
Jakub Jelinek [Fri, 9 Mar 2018 18:01:22 +0000 (19:01 +0100)]
re PR c++/84724 (internal compiler error: in single_succ_edge, at basic-block.h:339 with a declaration of __builtin_trap)

PR c++/84724
* decl.c (duplicate_decls): Don't override __* prefixed builtins
except for __[^b]*_chk, instead issue permerror and for -fpermissive
also a note and return olddecl.

* g++.dg/ext/pr84724.C: New test.

From-SVN: r258391

6 years agore PR target/83712 ("Unable to find a register to spill" when compiling for thumb1)
Vladimir Makarov [Fri, 9 Mar 2018 16:00:36 +0000 (16:00 +0000)]
re PR target/83712 ("Unable to find a register to spill" when compiling for thumb1)

2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>

PR target/83712
* lra-assigns.c (assign_by_spills): Return a flag of reload
assignment failure.  Do not process the reload assignment
failures.  Do not spill other reload pseudos if they has the same
reg class.
(lra_assign): Add a return arg.  Set up from the result of
assign_by_spills call.
(find_reload_regno_insns, lra_split_hard_reg_for): New functions.
* lra-constraints.c (split_reg): Add a new arg.  Use it instead of
usage_insns if it is not NULL.
(spill_hard_reg_in_range): New function.
(split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
* lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
function prototypes.
(lra_assign): Change prototype.
* lra.c (lra): Add code to deal with fails by splitting hard reg
live ranges.

2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>

PR target/83712
* gcc.target/arm/pr83712.c: New.

From-SVN: r258390

6 years ago[arm] PR target/83193: Do not print arch/cpu hints twice on invalid -march/-mcpu
Kyrylo Tkachov [Fri, 9 Mar 2018 15:42:10 +0000 (15:42 +0000)]
[arm] PR target/83193: Do not print arch/cpu hints twice on invalid -march/-mcpu

Currently when handling an invalid -march or -mcpu option on a toolchain without an explicit --with-mode configuration
and compiling without an explicit -mthumb or -marm the arm specs end up calling arm_target_thumb_only to determine
the "thumbness" of the target, which involves parsing the architecture or cpu name. But the functions doing that
parsing also emit error messages and hints on invalid arguments. Later when we parse the architecture or cpu string to
as part of the canonicalisation process (arm_canon_arch_option) we end up emitting the errors again.

The solution in this patch is to silence the errors during the arm_target_thumb_only processing so that they are not emitted
twice. arm_canon_arch_option is guaranteed to run as well, so it can emit the errors and hints that it needs.

Bootstrapped and tested on arm-none-linux-gnueabihf.

Checked that we emit the arch/cpu hints for invalid -march/-mcpu options only once when no "thumbness" options were specified
during configuration or invocation.

PR target/83193
* common/config/arm/arm-common.c (arm_parse_arch_option_name):
Accept complain bool parameter.  Only emit errors if it is true.
(arm_parse_cpu_option_name): Likewise.
(arm_target_thumb_only): Adjust callers of the above.
* config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
prototype to take a default true bool parameter.
(arm_parse_arch_option_name): Likewise.

From-SVN: r258389

6 years agojit: use 'configure' to replace hard-coded linker options (PR jit/64089 and PR jit...
David Malcolm [Fri, 9 Mar 2018 15:24:44 +0000 (15:24 +0000)]
jit: use 'configure' to replace hard-coded linker options (PR jit/64089 and PR jit/84288)

gcc/ChangeLog:
PR jit/64089
PR jit/84288
* Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
* configure: Regenerate.
* configure.ac ("linker --version-script option"): New.
("linker soname option"): New.

gcc/jit/ChangeLog:
PR jit/64089
PR jit/84288
* Make-lang.in (COMMA): New.
(LIBGCCJIT_VERSION_SCRIPT_OPTION): New.
(LIBGCCJIT_SONAME_OPTION): New.
(jit): Move --version-script and -soname linker options to the
above.

Co-Authored-By: Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
From-SVN: r258388

6 years agore PR tree-optimization/84775 (ICE on valid code at -O3: in check_loop_closed_ssa_def...
Richard Biener [Fri, 9 Mar 2018 13:29:39 +0000 (13:29 +0000)]
re PR tree-optimization/84775 (ICE on valid code at -O3: in check_loop_closed_ssa_def, at tree-ssa-loop-manip.c:709)

2018-03-09  Richard Biener  <rguenther@suse.de>

PR tree-optimization/84775
* tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
immediate uses of predicate stmts and mark them modified.

Revert
PR tree-optimization/84178
* tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
to caller.
(version_loop_for_if_conversion): Delay update_ssa call.
(tree_if_conversion): Delay update_ssa until after predicate
insertion.

* gcc.dg/torture/pr84775.c: New testcase.

From-SVN: r258387

6 years agoS/390: libatomic: Fix 16 byte atomic exchange
Andreas Krebbel [Fri, 9 Mar 2018 12:32:22 +0000 (12:32 +0000)]
S/390: libatomic: Fix 16 byte atomic exchange

The compiler builtin will use the hardware instruction cdsg if the
memory operand is properly aligned and will fall back to the
library call otherwise.
In case the compiler for one part is able to detect that the
location is aligned and fails to do so for another usage of the hw
instruction and the sw fall back would be mixed on the same memory
location.  To avoid this the library fall back also has to use the
hardware instruction if possible.

libatomic/ChangeLog:

2018-03-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* config/s390/exch_n.c: New file.
* configure.tgt: Add the config directory for s390.

From-SVN: r258384

6 years ago[PR c++/84733] ICE in check-local-shadow
Nathan Sidwell [Fri, 9 Mar 2018 12:13:55 +0000 (12:13 +0000)]
[PR c++/84733] ICE in check-local-shadow

https://gcc.gnu.org/ml/gcc-patches/2018-03/msg00425.html
PR c++/84733
* name-lookup.c (do_pushdecl_with_scope): Only clear
current_function_decl when pushing a non-class (i.e. namespace)
scope.

From-SVN: r258383

6 years agore PR debug/84404 (Several "leb128 operand is an undefined symbol" in go testsuite...
Jakub Jelinek [Fri, 9 Mar 2018 09:58:49 +0000 (10:58 +0100)]
re PR debug/84404 (Several "leb128 operand is an undefined symbol" in go testsuite with latest debug improvements)

PR debug/84404
* gcc.dg/graphite/pr84404.c: Only compile on pthread effective
targets.

From-SVN: r258382

6 years agore PR target/84763 (ICE in i386_pe_seh_cold_init)
Eric Botcazou [Fri, 9 Mar 2018 09:06:52 +0000 (09:06 +0000)]
re PR target/84763 (ICE in i386_pe_seh_cold_init)

PR target/84763
* config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
when the function accesses prior frames.

From-SVN: r258381

6 years agoprinters.py (build_libstdcxx_dictionary): Fix std::_Fwd_list_iterator and std::_Fwd_l...
François Dumont [Fri, 9 Mar 2018 05:56:07 +0000 (05:56 +0000)]
printers.py (build_libstdcxx_dictionary): Fix std::_Fwd_list_iterator and std::_Fwd_list_const_iterator printers registration.

2018-03-09  François Dumont  <fdumont@gcc.gnu.org>

* python/libstdcxx/v6/printers.py (build_libstdcxx_dictionary):
Fix std::_Fwd_list_iterator and std::_Fwd_list_const_iterator printers
registration.

From-SVN: r258380

6 years agoPR libstdc++/84769 qualify std::get and std::get_if to avoid ADL
Jonathan Wakely [Fri, 9 Mar 2018 01:10:02 +0000 (01:10 +0000)]
PR libstdc++/84769 qualify std::get and std::get_if to avoid ADL

PR libstdc++/84769
* include/std/variant (get<_Tp, _Types...>, get_if<_Tp, _Types...>):
Qualify calls to get<_Np, Types...> and get_if<_Np, _Types...>.

From-SVN: r258376

6 years agoUse non-throwing is_directory in filesystem::create_directory
Jonathan Wakely [Fri, 9 Mar 2018 01:09:58 +0000 (01:09 +0000)]
Use non-throwing is_directory in filesystem::create_directory

The create_dir helper was calling the throwing form of
filesystem::is_directory instead of passing the error_code argument.
Since std::filesystem::create_directory(const path&, error_code&) is
noexcept, it would call std::terminate if an error occurred in
is_directory.

Passing the error_code also takes care of clearing it in the case where
is_directory returns true.

src/filesystem/ops.cc (create_dir): Pass error_code to is_directory.
src/filesystem/std-ops.cc (create_dir): Likewise.

From-SVN: r258375

6 years agoDaily bump.
GCC Administrator [Fri, 9 Mar 2018 00:16:13 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r258374

6 years agore PR debug/84456 (gcc.dg/guality/pr49888.c fail)
Jakub Jelinek [Thu, 8 Mar 2018 21:50:37 +0000 (22:50 +0100)]
re PR debug/84456 (gcc.dg/guality/pr49888.c fail)

PR debug/84456
* dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
gen_llsym, otherwise call maybe_gen_llsym.

From-SVN: r258371

6 years agore PR c++/80598 (-Wunused triggers for functions used in uninstantiated templates)
Jason Merrill [Thu, 8 Mar 2018 21:18:50 +0000 (22:18 +0100)]
re PR c++/80598 (-Wunused triggers for functions used in uninstantiated templates)

PR c++/80598
* call.c (build_over_call): In templates set TREE_USED (first_fn) when
not calling mark_used for the benefit of -Wunused-function warning.

* g++.dg/warn/Wunused-function4.C: New test.

From-SVN: r258370

6 years agore PR inline-asm/84742 (internal compiler error: in process_alt_operands, at lra...
Jakub Jelinek [Thu, 8 Mar 2018 20:55:03 +0000 (21:55 +0100)]
re PR inline-asm/84742 (internal compiler error: in process_alt_operands, at lra-constraints.c:2112)

PR inline-asm/84742
* recog.c (asm_operand_ok): Return 0 if multi-character constraint
has ',' character inside of it.

* gcc.target/i386/pr84742-1.c: New test.
* gcc.target/i386/pr84742-2.c: New test.

From-SVN: r258369

6 years ago[AArch64] PR target/84748: Mark *compare_cstore<mode>_insn as clobbering CC reg
Kyrylo Tkachov [Thu, 8 Mar 2018 15:50:25 +0000 (15:50 +0000)]
[AArch64] PR target/84748: Mark *compare_cstore<mode>_insn as clobbering CC reg

In this wrong-code PR the combine pass ends up moving a CC-using instruction past a *compare_cstore<mode>_insn
insn_and_split. After reload the *compare_cstore<mode>_insn splitter ends up generating a SUBS instruction that
clobbers the condition flags, and things go bad.

The solution is simple, the *compare_cstore<mode>_insn pattern should specify that it clobbers the CC register
so that combine (or any other pass) does not assume that it can move CC-using patterns across it.

This patch does that and fixes the testcase.

The testcase FAILs on GCC 8 only, but the buggy pattern is in GCC 6 onwards, so we should backport this as
a latent bug fix after it's had some time to bake in trunk.

Bootstrapped and tested on aarch64-none-linux-gnu.

PR target/84748
* config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
as clobbering CC_REGNUM.

* gcc.c-torture/execute/pr84748.c: New test.

From-SVN: r258366

6 years agore PR tree-optimization/84552 (Compile time hog w/ -O2 -floop-nest-optimize -fno...
Richard Biener [Thu, 8 Mar 2018 14:41:39 +0000 (14:41 +0000)]
re PR tree-optimization/84552 (Compile time hog w/ -O2 -floop-nest-optimize -fno-tree-copy-prop -fno-tree-fre -fno-tree-loop-ivcanon)

2018-03-08  Richard Biener  <rguenther@suse.de>

PR middle-end/84552
* tree-scalar-evolution.c: Include tree-into-ssa.h.
(follow_copies_to_constant): Do not follow SSA names registered
for update.

* gcc.dg/graphite/pr84552.c: New testcase.

From-SVN: r258365

6 years agore PR tree-optimization/84178 (ICE in release_bb_predicate)
Richard Biener [Thu, 8 Mar 2018 12:56:40 +0000 (12:56 +0000)]
re PR tree-optimization/84178 (ICE in release_bb_predicate)

2018-03-08  Richard Biener  <rguenther@suse.de>

PR tree-optimization/84178
* tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
to caller.
(version_loop_for_if_conversion): Delay update_ssa call.
(tree_if_conversion): Delay update_ssa until after predicate
insertion.

* gcc.dg/torture/pr84178-2.c: New testcase.

From-SVN: r258364

6 years agotree-if-conv.c: fix ICE seen with -fno-tree-forwprop (PR tree-optimization/84178)
David Malcolm [Thu, 8 Mar 2018 12:17:36 +0000 (12:17 +0000)]
tree-if-conv.c: fix ICE seen with -fno-tree-forwprop (PR tree-optimization/84178)

PR tree-optimization/84178 reports a couple of source files that ICE inside
ifcvt when compiled with -03 -fno-tree-forwprop (trunk and gcc 7).

Both cases involve problems with ifcvt's per-BB gimplified predicates.

Testcase 1 fails this assertion within release_bb_predicate during cleanup:

283       if (flag_checking)
284 for (gimple_stmt_iterator i = gsi_start (stmts);
285      !gsi_end_p (i); gsi_next (&i))
286   gcc_assert (! gimple_use_ops (gsi_stmt (i)));

The testcase contains a division in the loop, which leads to
if_convertible_loop_p returning false (due to gimple_could_trap_p being true
for the division).  This happens *after* the per-BB gimplified predicates
have been created in predicate_bbs (loop).
Hence tree_if_conversion bails out to "cleanup", but the gimplified predicates
exist and make use of SSA names; for example this conjunction for two BB
conditions:

  _4 = h4.1_112 != 0;
  _175 = (signed char) _117;
  _176 = _175 >= 0;
  _174 = _4 & _176;

is using SSA names.

This assertion was added in r236498 (aka c3deca2519d97c55876869c57cf11ae1e5c6cf8b):

    2016-05-20  Richard Biener  <rguenther@suse.de>

        * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Use
        gimple_seq_add_seq_without_update.
        (release_bb_predicate): Assert we have no operands to free.
        (if_convertible_loop_p_1): Calculate post dominators later.
        Do not free BB predicates here.
        (combine_blocks): Do not recompute BB predicates.
        (version_loop_for_if_conversion): Save BB predicates around
        loop versioning.

        * gcc.dg/tree-ssa/ifc-cd.c: Adjust.

The following patch fixes this by adding a call to gimple_seq_discard
to release_bb_predicate.  It also updates the assertion, so that
instead of asserting the stmts have no imm uses, instead assert that
they weren't added to a bb before discarding them (otherwise discarding
them would be a bug).  We know this is the case because
insert_gimplified_predicates has:

  /* Once the sequence is code generated, set it to NULL.  */
  set_bb_predicate_gimplified_stmts (bb, NULL);

but asserting it seems appropriate as a double-check.

The patch doesn't address the 2nd issue within PR tree-optimization/84178.

gcc/ChangeLog:
PR tree-optimization/84178
* tree-if-conv.c (release_bb_predicate): Remove the
the assertion that the stmts have NULL use_ops.
Discard the statements, asserting that they haven't
yet been added to a BB.

gcc/testsuite/ChangeLog:
PR tree-optimization/84178
* gcc.c-torture/compile/pr84178-1.c: New test.

From-SVN: r258363

6 years agoFix ifunc detection in target-supports.exp file.
Thomas Schwinge [Thu, 8 Mar 2018 09:26:24 +0000 (10:26 +0100)]
Fix ifunc detection in target-supports.exp file.

2018-03-08  Thomas Schwinge  <thomas@codesourcery.com>

* lib/target-supports.exp: Do not return zero from a ifunc
function.

From-SVN: r258362

6 years agore PR tree-optimization/84746 (ICE on valid code at -O2 and -O3: Segmentation fault)
Richard Biener [Thu, 8 Mar 2018 09:23:44 +0000 (09:23 +0000)]
re PR tree-optimization/84746 (ICE on valid code at -O2 and -O3: Segmentation fault)

2018-03-08  Richard Biener  <rguenther@suse.de>

PR tree-optimization/84746
* tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
(phi_translate): Pass in destination ANTIC_OUT set.
(phi_translate_1): Likewise.  For a simplified result lookup
a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
(phi_translate_set): Adjust.
(do_pre_regular_insertion): Likewise.
(do_pre_partial_partial_insertion): Likewise.

* gcc.dg/torture/pr84746.c: New testcase.

From-SVN: r258361

6 years agoDocument gcov-io (PR gcov-profile/84735).
Martin Liska [Thu, 8 Mar 2018 09:05:26 +0000 (10:05 +0100)]
Document gcov-io (PR gcov-profile/84735).

2018-03-08  Martin Liska  <mliska@suse.cz>

PR gcov-profile/84735
* doc/gcov.texi: Document usage of profile files.
* gcov-io.h: Document changes in the format.

From-SVN: r258360

6 years ago[LVU] reset view at function entry, omit views at line zero
Alexandre Oliva [Thu, 8 Mar 2018 08:27:56 +0000 (08:27 +0000)]
[LVU] reset view at function entry, omit views at line zero

Location views might be associated with locations that lack line
number information (line number zero), but since we omit .loc
directives that would have been issued with line number zero, we also
omit the symbolic view numbers that would have been issued at such
points.

Resetting views at function entry points address some of these issues,
and alleviate the huge chains of symbolic views that have burdened
assemblers since we disabled -ginternal-reset-location-views by
default, but other problems of undefined views remain when it's not
the whole function that lacks line number info, just parts of it.

So, when we encounter a request to output a view that may have been
referenced, but we decide to omit the .loc because the line is zero,
we will now omit the view as well, i.e., we will internally regard
that view as zero-numbered.

for  gcc/ChangeLog

PR debug/84404
PR debug/84408
* dwarf2out.c (struct dw_line_info_table): Update comments for
view == -1.
(FORCE_RESET_NEXT_VIEW): New.
(FORCE_RESETTING_VIEW_P): New.
(RESETTING_VIEW_P): Check for -1 too.
(ZERO_VIEW_P): Likewise.
(new_line_info_table): Force-reset next view.
(dwarf2out_begin_function): Likewise.
(dwarf2out_source_line): Simplify zero_view_p initialization.
Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
view directly.  Omit view when omitting .loc at line 0.

for  gcc/testsuite/ChangeLog

PR debug/84404
PR debug/84408
* gcc.dg/graphite/pr84404.c: New.

From-SVN: r258355

6 years agore PR tree-optimization/84740 (ICE in build_constructors, at tree-switch-conversion...
Jakub Jelinek [Thu, 8 Mar 2018 07:29:42 +0000 (08:29 +0100)]
re PR tree-optimization/84740 (ICE in build_constructors, at tree-switch-conversion.c:965)

PR tree-optimization/84740
* tree-switch-conversion.c (process_switch): Call build_constructors
only if info.phi_count is non-zero.

* gcc.dg/torture/pr84740.c: New test.

From-SVN: r258354

6 years agore PR tree-optimization/84739 (ICE in get_value_for_expr, at tree-ssa-ccp.c:649)
Jakub Jelinek [Thu, 8 Mar 2018 06:56:59 +0000 (07:56 +0100)]
re PR tree-optimization/84739 (ICE in get_value_for_expr, at tree-ssa-ccp.c:649)

PR tree-optimization/84739
* tree-tailcall.c (find_tail_calls): Check call arguments against
DECL_ARGUMENTS (current_function_decl) rather than
DECL_ARGUMENTS (func) when checking for tail recursion.

* gcc.dg/pr84739.c: New test.

From-SVN: r258351

6 years agoprinters.py (NodeIteratorPrinter): New.
François Dumont [Thu, 8 Mar 2018 06:26:15 +0000 (06:26 +0000)]
printers.py (NodeIteratorPrinter): New.

2018-03-08  François Dumont  <fdumont@gcc.gnu.org>

* python/libstdcxx/v6/printers.py (NodeIteratorPrinter): New.
(StdListIteratorPrinter): Inherit from latter.
(StdFwdListIteratorPrinter): New, inherit from latter.
(StdDebugIteratorPrinter.to_string): Use non-debug iterator printer
when iterator has no associated container.
(build_libstdcxx_dictionary): Add __gnu_cxx::_Fwd_list_iterator and
__gnu_cxx::_Fwd_list_const_iterator printers. Remove __norm namespace
registrations.
* testsuite/libstdc++-prettyprinters/debug.cc: Adapt.
* testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Adapt.

From-SVN: r258350

6 years agoPR tree-optimization/83519 - missing -Wrestrict on an overlapping strcpy to a non...
Martin Sebor [Thu, 8 Mar 2018 00:56:07 +0000 (00:56 +0000)]
PR tree-optimization/83519 - missing -Wrestrict on an overlapping strcpy to a non-member array

gcc/testsuite/ChangeLog:

* gcc.dg/Wrestrict-13.c: New test.

From-SVN: r258348

6 years agore PR fortran/64124 ([F95] Valid constant expr rejected)
Steven G. Kargl [Thu, 8 Mar 2018 00:42:41 +0000 (00:42 +0000)]
re PR fortran/64124 ([F95] Valid constant expr rejected)

2018-03-07  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/64124
PR fortran/70409
* decl.c (gfc_match_char_spec): Try to reduce a charlen to a constant.

2018-03-07  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/64124
PR fortran/70409
* gfortran.dg/pr64124.f90: New tests.
* gfortran.dg/pr70409.f90: New tests.

From-SVN: r258347

6 years agoDaily bump.
GCC Administrator [Thu, 8 Mar 2018 00:16:14 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r258345

6 years agocontrib.texi: Add entries for Martin Liska...
Jakub Jelinek [Wed, 7 Mar 2018 21:59:09 +0000 (22:59 +0100)]
contrib.texi: Add entries for Martin Liska...

* doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
Volker Reichelt's entry and add entries for people that perform
GCC fuzzy testing and report numerous bugs.

From-SVN: r258342

6 years agolambda.c (is_capture_proxy_with_ref): Remove.
Jason Merrill [Wed, 7 Mar 2018 21:04:18 +0000 (16:04 -0500)]
lambda.c (is_capture_proxy_with_ref): Remove.

* lambda.c (is_capture_proxy_with_ref): Remove.

* constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.

From-SVN: r258341

6 years agors6000: -mreadonly-in-sdata (PR82411)
Segher Boessenkool [Wed, 7 Mar 2018 20:27:11 +0000 (21:27 +0100)]
rs6000: -mreadonly-in-sdata (PR82411)

This adds a new option -mreadonly-in-sdata (on by default) that
controls whether readonly data can be put in sdata.  (For EABI this
does nothing, readonly data is put in sdata2 as usual).

PR target/82411
* config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
readonly data in sdata, if that is disabled.
* config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
* doc/invoke.texi (RS/6000 and PowerPC Options): Document
-mreadonly-in-sdata option.

gcc/testsuite/
PR target/82411
* gcc.target/powerpc/ppc-sdata-2.c: Skip if -mno-readonly-in-sdata.

From-SVN: r258340

6 years agoPR tree-optimization/84468 - bogus -Wstringop-truncation despite assignment after...
Martin Sebor [Wed, 7 Mar 2018 19:30:31 +0000 (19:30 +0000)]
PR tree-optimization/84468 - bogus -Wstringop-truncation despite assignment after conditional strncpy

gcc/ChangeLog:

PR tree-optimization/84468
* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
basic block when looking for nul assignment.

gcc/testsuite/ChangeLog:

PR tree-optimization/84468
* g++.dg/warn/Wstringop-truncation-2.C: New test.
* gcc.dg/Wstringop-truncation.c: New test.
* gcc.dg/Wstringop-truncation-2.c: New test.

From-SVN: r258339

6 years agore PR target/84277 (A lot of new acats testsuite failures)
Eric Botcazou [Wed, 7 Mar 2018 15:54:59 +0000 (15:54 +0000)]
re PR target/84277 (A lot of new acats testsuite failures)

PR target/84277
* except.h (output_function_exception_table): Adjust prototype.
* except.c (output_function_exception_table): Remove FNNAME parameter
and add SECTION parameter.  Ouput one part of the table at a time.
* final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
the first part of the exception table and emit unwind directives.
* config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
(i386_pe_seh_cold_init): Likewise.
* config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
(ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
* config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
(ix86_output_call_insn): Emit a nop in one more case for SEH.
* config/i386/winnt.c: Include except.h.
(struct seh_frame_state): Add reg_offset, after_prologue and
in_cold_section fields.
(i386_pe_seh_end_prologue): Set seh->after_prologue.
(i386_pe_seh_cold_init): New function.
(i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
to seh->in_cold_section.
(seh_emit_push): Record the offset of the push.
(seh_emit_save): Record the offet of the save.
(i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
Test seh->after_prologue to disregard the epilogue.
(i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
(i386_pe_end_cold_function): New function.

From-SVN: r258338

6 years agoruntime: push arena on AIX higher due to clashes
Ian Lance Taylor [Wed, 7 Mar 2018 15:22:46 +0000 (15:22 +0000)]
runtime: push arena on AIX higher due to clashes

    Reviewed-on: https://go-review.googlesource.com/99117

From-SVN: r258337

6 years agoruntime: use a fence instruction before rdtsc
Ian Lance Taylor [Wed, 7 Mar 2018 14:31:03 +0000 (14:31 +0000)]
runtime: use a fence instruction before rdtsc

    This implements the same choices made in the gc runtime, except that
    for 32-bit x86 we only use the fence instruction if the processor
    supports SSE2.

    The code here is hacked up for speed; the gc runtime uses straight
    assembler.

    Reviewed-on: https://go-review.googlesource.com/97715

From-SVN: r258336

6 years agoAda: Fix s-oscons.ads generation
Sebastian Huber [Wed, 7 Mar 2018 12:10:24 +0000 (12:10 +0000)]
Ada: Fix s-oscons.ads generation

The $(GNATLIBCFLAGS) are already included in $(GNATLIBCFLAGS_FOR_C).

We must call the C compiler with the right machine flags.  So, add
$(GNATLIBCFLAGS_FOR_C) to $(OSCONS_EXTRACT).  For example, on a bi-arch
compiler supporting 32-bit and 64-bit instruction sets we pick otherwise
only one variant due to a missing -m32 or -m64 flag.

gcc/ada
* gcc-interface/Makefile.in (OSCONS_CPP): Remove redundant
$(GNATLIBCFLAGS).
(OSCONS_EXTRACT): Add $(GNATLIBCFLAGS_FOR_C).

From-SVN: r258334

6 years agore PR target/84565 (ICE in extract_insn, at recog.c:2304 on aarch64)
Jakub Jelinek [Wed, 7 Mar 2018 10:39:32 +0000 (11:39 +0100)]
re PR target/84565 (ICE in extract_insn, at recog.c:2304 on aarch64)

PR fortran/84565
* config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.

* gfortran.dg/pr84565.f90: New test.

From-SVN: r258333

6 years agore PR c++/84704 (internal compiler error: gimplification failed)
Jakub Jelinek [Wed, 7 Mar 2018 09:19:36 +0000 (10:19 +0100)]
re PR c++/84704 (internal compiler error: gimplification failed)

PR c++/84704
* gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
on tmp_var.
* tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
don't print names of DECL_NAMELESS DECL_IGNORED_P decls.

From-SVN: r258317

6 years agore PR middle-end/84723 (ICE in create_target_clone, at multiple_target.c:275)
Jakub Jelinek [Wed, 7 Mar 2018 09:16:07 +0000 (10:16 +0100)]
re PR middle-end/84723 (ICE in create_target_clone, at multiple_target.c:275)

PR middle-end/84723
* multiple_target.c: Include tree-inline.h and intl.h.
(expand_target_clones): Diagnose and fail if node->definition and
!tree_versionable_function_p (node->decl).

* gcc.target/i386/pr84723-1.c: New test.
* gcc.target/i386/pr84723-2.c: New test.
* gcc.target/i386/pr84723-3.c: New test.
* gcc.target/i386/pr84723-4.c: New test.
* gcc.target/i386/pr84723-5.c: New test.

From-SVN: r258316

6 years agoFix Changelog commit errro.
Denis Chertykov [Wed, 7 Mar 2018 08:53:33 +0000 (11:53 +0300)]
Fix Changelog commit errro.

From-SVN: r258314

6 years agopa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use sprint_ul.
John David Anglin [Wed, 7 Mar 2018 00:47:41 +0000 (00:47 +0000)]
pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use sprint_ul.

* config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
sprint_ul.
(ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
(ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
* config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.

From-SVN: r258312

6 years agore PR fortran/64107 ([F95] Pure function as array size)
Steven G. Kargl [Wed, 7 Mar 2018 00:25:30 +0000 (00:25 +0000)]
re PR fortran/64107 ([F95] Pure function as array size)

2018-03-06  Steven G. Kargl  <kargl@gcc.gnu.org>

        PR fortran/64107
        * gfortran.dg/pr64107.f90: New test.

From-SVN: r258311

6 years agofptr.c (_dl_read_access_allowed): New.
John David Anglin [Wed, 7 Mar 2018 00:17:32 +0000 (00:17 +0000)]
fptr.c (_dl_read_access_allowed): New.

* config/pa/fptr.c (_dl_read_access_allowed): New.
(__canonicalize_funcptr_for_compare): Use it.

From-SVN: r258310

6 years agoDaily bump.
GCC Administrator [Wed, 7 Mar 2018 00:16:24 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r258309

6 years agore PR fortran/84697 (minloc/maxloc not simplified with zero size)
Thomas Koenig [Tue, 6 Mar 2018 23:50:01 +0000 (23:50 +0000)]
re PR fortran/84697 (minloc/maxloc not simplified with zero size)

2017-03-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/84697
PR fortran/66128
* expr.c (simplify_parameter_variable): If p is a size zero array
and not an ARRAY_EXPR insert an empty array constructor and
return.
* gfortran.h: Add prototype for gfc_is_size_zero_array.
* simplify.c (is_size_zero_array): Make non-static and rename into
(gfc_is_size_zero_array):  Check for parameter arrays of zero
size by comparing shape and absence of constructor.
(gfc_simplify_all): Use gfc_is_size_zero_array instead of
is_size_zero_array.
(gfc_simplify_count): Likewise.
(gfc_simplify_iall): Likewise.
(gfc_simplify_iany): Likewise.
(gfc_simplify_iparity): Likewise.
(gfc_simplify_minval): Likewise.
(gfc_simplify_maxval): Likewise.
(gfc_simplify_product): Likewise.
(gfc_simplify_sum): Likewise.

2017-03-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/84697
PR fortran/66128
* gfortran.dg/minmaxloc_zerosize_1.f90: New test.

From-SVN: r258305

6 years agore PR libstdc++/84601 (std::optional<std::pair<int, int>> is not assignment copyable)
Ville Voutilainen [Tue, 6 Mar 2018 21:43:03 +0000 (23:43 +0200)]
re PR libstdc++/84601 (std::optional<std::pair<int, int>> is not assignment copyable)

PR libstdc++/84601
* include/std/optional (_Optional_payload): Split into multiple
specializations that can handle different cases of trivial or
non-trivial assignment operators.
* testsuite/20_util/optional/84601.cc: New.
* testsuite/20_util/optional/cons/value_neg.cc: Adjust.

From-SVN: r258304

6 years agore PR c++/84684 (inserting random code / flags produces wrong code)
Marek Polacek [Tue, 6 Mar 2018 21:11:46 +0000 (21:11 +0000)]
re PR c++/84684 (inserting random code / flags produces wrong code)

PR c++/84684
* constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
arguments.

* g++.dg/cpp1z/constexpr-84684.C: New test.

From-SVN: r258303

6 years agore PR c/84721 (ICE in c_push_function_context, at c-decl.c:9667)
Jakub Jelinek [Tue, 6 Mar 2018 20:57:30 +0000 (21:57 +0100)]
re PR c/84721 (ICE in c_push_function_context, at c-decl.c:9667)

PR c/84721
* c-parser.c (add_debug_begin_stmt): Don't add DEBUG_BEGIN_STMT if
!building_stmt_list_p ().

* gcc.dg/pr84721.c: New test.

From-SVN: r258302

6 years agore PR target/84710 (ICE: RTL check: expected code 'reg', have 'subreg' in rhs_regno...
Jakub Jelinek [Tue, 6 Mar 2018 20:41:37 +0000 (21:41 +0100)]
re PR target/84710 (ICE: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:1896 with -O -fno-forward-propagate)

PR target/84710
* combine.c (try_combine): Use reg_or_subregno instead of handling
just paradoxical SUBREGs and REGs.

* gcc.dg/pr84710.c: New test.

From-SVN: r258301

6 years agore PR fortran/56667 (Syntax error causes misleading message: "Expected PARAMETER...
Steven G. Kargl [Tue, 6 Mar 2018 19:05:48 +0000 (19:05 +0000)]
re PR fortran/56667 (Syntax error causes misleading message: "Expected PARAMETER symbol in complex constant")

2018-03-06  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/56667
* primary.c (match_sym_complex_part): Give the matcher for an implied
do-loop a chance to run.

2018-03-06  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/56667
* gfortran.dg/implied_do_2.f90: New test.
* gfortran.dg/coarray_8.f90: Update for new error message.

From-SVN: r258281

6 years agotrans.c (convert_with_check): Fix typo in the condition guarding the overflow check...
Eric Botcazou [Tue, 6 Mar 2018 12:21:27 +0000 (12:21 +0000)]
trans.c (convert_with_check): Fix typo in the condition guarding the overflow check emitted for the upper...

* gcc-interface/trans.c (convert_with_check): Fix typo in the condition
guarding the overflow check emitted for the upper bound of a floating-
point conversion.

From-SVN: r258277

6 years ago* gcc-interface/utils.c (def_builtin_1): Bail out on error_mark_node.
Eric Botcazou [Tue, 6 Mar 2018 12:09:33 +0000 (12:09 +0000)]
* gcc-interface/utils.c (def_builtin_1): Bail out on error_mark_node.

From-SVN: r258276

6 years ago[ARC] Cleanup unused functions.
Claudiu Zissulescu [Tue, 6 Mar 2018 11:50:16 +0000 (12:50 +0100)]
[ARC] Cleanup unused functions.

Remove unused pieces of code.

gcc/
2018-03-06  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.c (arc_finalize_pic): Remove function.
(arc_must_save_register): We use single base PIC register, remove
checks to save/restore the PIC register.
(arc_expand_prologue): Likewise.
* config/arc/arc-protos.h (arc_set_default_type_attributes):
Remove.
(arc_verify_short): Likewise.
(arc_attr_type): Likewise.
* config/arc/arc.c (arc_set_default_type_attributes): Remove.
(walk_stores): Likewise.
(arc_address_cost): Make it static.
(arc_verify_short): Likewise.
(branch_dest): Likewise.
(arc_attr_type): Likewise.
* config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
(TARGET_INSN_LENGTH_PARAMETERS): Likewise.
(arc_final_prescan_insn): Remove inserting the nops due to
hardware hazards.  It is done in reorg step.
(insn_length_variant_t): Remove.
(insn_length_parameters_t): Likewise.
(arc_insn_length_parameters): Likewise.
(arc_get_insn_variants): Likewise.
* config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.

From-SVN: r258275

6 years agore PR inline-asm/84683 (internal compiler error: in move_for_stack_reg, at reg-stack...
Jakub Jelinek [Tue, 6 Mar 2018 09:23:36 +0000 (10:23 +0100)]
re PR inline-asm/84683 (internal compiler error: in move_for_stack_reg, at reg-stack.c:1173)

PR inline-asm/84683
* reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
assertion failure.

* g++.dg/ext/pr84683.C: New test.

From-SVN: r258273

6 years agore PR tree-optimization/84687 (error: invalid conversion in gimple call with -O3...
Jakub Jelinek [Tue, 6 Mar 2018 07:06:44 +0000 (08:06 +0100)]
re PR tree-optimization/84687 (error: invalid conversion in gimple call with -O3 and -ffast-math)

PR tree-optimization/84687
* omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
on new_node->decl.
* match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.

* gcc.dg/pr84687.c: New test.

From-SVN: r258272

6 years ago[C++] [PR84231] overload on cond_expr in template
Alexandre Oliva [Tue, 6 Mar 2018 06:25:12 +0000 (06:25 +0000)]
[C++] [PR84231] overload on cond_expr in template

A non-type-dependent COND_EXPR within a template is reconstructed with
the original operands, after one with non-dependent proxies is built to
determine its result type.  This is problematic because the operands of
a COND_EXPR determined to be an rvalue may have been converted to denote
their rvalue nature.  The reconstructed one, however, won't have such
conversions, so lvalue_kind may not recognize it as an rvalue, which may
lead to e.g. incorrect overload resolution decisions.

If we mistake such a COND_EXPR for an lvalue, overload resolution might
regard a conversion sequence that binds it to a non-const reference as
viable, and then select that over one that binds it to a const
reference.  Only after template substitution would we rebuild the
COND_EXPR, realize it is an rvalue, and conclude the reference binding
is ill-formed, but at that point we'd have long discarded any alternate
candidates we could have used.

This patch modifies the logic that determines whether a
(non-type-dependent) COND_EXPR in a template is an lvalue, to rely on
its type, more specifically, on the presence of a REFERENCE_TYPE
wrapper.  In order to avoid a type bootstrapping problem, the
REFERENCE_TYPE that wraps the type of some such COND_EXPRs is
introduced earlier, so that we don't have to test for lvalueness of
the expression using the very code that we wish to change.

for  gcc/cp/ChangeLog

PR c++/84231
* tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
only while processing template decls.
* typeck.c (build_x_conditional_expr): Move wrapping of
reference type around type...
* call.c (build_conditional_expr_1): ... here.  Rename
is_lvalue to is_glvalue.
* parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
INDIRECT_REF of COND_EXPR too.

for  gcc/testsuite/ChangeLog

PR c++/84231
* g++.dg/pr84231.C: New.

From-SVN: r258271

6 years ago[PR c++/84593] ice on braced init with uninit ref field
Alexandre Oliva [Tue, 6 Mar 2018 06:24:53 +0000 (06:24 +0000)]
[PR c++/84593] ice on braced init with uninit ref field

If an initializer expr is to be NULL in a ctor initializer list, we
ICE in picflag_from_initializer and elsewhere.

If we're missing an initializer for a reference field, we report the
error, but then build a zero initializer to avoid the ICE.

for  gcc/cp/ChangeLog

PR c++/84593
* init.c (build_zero_init_1): Zero-initialize references.

for  gcc/testsuite/ChangeLog

PR c++/84593
* g++.dg/cpp1y/pr84593.C: New.

From-SVN: r258270

6 years ago[PR c++/84492] stmt expr ending with overload
Alexandre Oliva [Tue, 6 Mar 2018 06:24:40 +0000 (06:24 +0000)]
[PR c++/84492] stmt expr ending with overload

We ICEd when returning a stmt expr that ends with an overloaded
function, because instantiate_type did not know what to do with
STMT_EXPRs.  And it shouldn't have to: the expected type of a stmt
expr cannot be used to resolve its value: an unresolved overload
cannot supply the result of a stmt expr.  Catch that and report the
error in the stmt expr before we have a chance to instantiate it.

for  gcc/cp/ChangeLog

PR c++/84492
* semantics.c (finish_stmt_expr_expr): Reject unresolved
overloads used as stmt expr values.

for  gcc/testsuite/ChangeLog

PR c++/84492
* g++.dg/pr84492.C: New.

From-SVN: r258269