Commit Graph

160270 Commits

Author SHA1 Message Date
Paul Thomas
26219cee84 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
2018-03-11 22:25:11 +00:00
Steven G. Kargl
1813c97a6f 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
2018-03-11 21:39:15 +00:00
Steven G. Kargl
fbe1f01743 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
2018-03-11 21:34:40 +00:00
Thomas Koenig
6f76317a47 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
2018-03-11 20:28:00 +00:00
Jakub Jelinek
cd5437ab5d 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
2018-03-11 17:50:08 +01:00
Kito Cheng
ff77f6e8b3 [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
2018-03-11 12:21:23 +00:00
Kito Cheng
72b7e5e1b2 [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
2018-03-11 08:42:30 +00:00
Kito Cheng
483c57af55 [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
2018-03-11 08:24:33 +00:00
Monk Chiang
3999578cc5 [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
2018-03-11 07:48:48 +00:00
GCC Administrator
d8c12d24bf Daily bump.
From-SVN: r258423
2018-03-11 00:16:18 +00:00
Steven G. Kargl
7d2fb01c0a 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
2018-03-10 18:34:12 +00:00
Vladimir Makarov
b3231b65bb 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
2018-03-10 16:32:21 +00:00
H.J. Lu
90984fe26a i386: Fix a typo: Enforcment -> Enforcement
PR target/84807
	* config/i386/i386.opt: Replace Enforcment with Enforcement.

From-SVN: r258414
2018-03-10 07:57:10 -08:00
Eric Botcazou
f1bc641455 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
2018-03-10 10:11:29 +00:00
Alexandre Oliva
7b602c4dc2 [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
2018-03-10 06:42:40 +00:00
Jason Merrill
7ed12599fa PR c++/84770 - ICE with typedef and parameter pack.
* pt.c (verify_unstripped_args_1): Split out from
	verify_unstripped_args.

From-SVN: r258408
2018-03-09 22:34:37 -05:00
Jason Merrill
732a431dc9 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
2018-03-09 22:34:29 -05:00
Jason Merrill
3569f81f2d 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
2018-03-09 22:34:23 -05:00
GCC Administrator
a72e8ba830 Daily bump.
From-SVN: r258405
2018-03-10 00:16:13 +00:00
Paolo Carlini
79228fd2d0 2018-03-09 Paolo Carlini <paolo.carlini@oracle.com>
* Fix wrong date in ChangeLog entry.

From-SVN: r258402
2018-03-09 23:05:51 +00:00
Jason Merrill
be977d080f 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
2018-03-09 23:03:06 +00:00
Peter Bergner
00d7fc28dc 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
2018-03-09 16:43:59 -06:00
Jakub Jelinek
2956d3a8dd 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
2018-03-09 23:23:14 +01:00
Jason Merrill
1577f10a63 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
2018-03-09 16:40:55 -05:00
Jason Merrill
5f2440b057 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
2018-03-09 21:39:14 +01:00
Jakub Jelinek
9d9a9a90ce 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
2018-03-09 20:12:29 +01:00
Martin Sebor
8286793a2b 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
2018-03-09 12:06:26 -07:00
Alexandre Oliva
998fd14139 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
2018-03-09 11:50:56 -07:00
Ian Lance Taylor
300e61fa15 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
2018-03-09 18:21:42 +00:00
Jakub Jelinek
060ad85254 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
2018-03-09 19:01:22 +01:00
Vladimir Makarov
e0cd6bc009 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
2018-03-09 16:00:36 +00:00
Kyrylo Tkachov
a4017ff772 [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
2018-03-09 15:42:10 +00:00
David Malcolm
deb3da39d6 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
2018-03-09 15:24:44 +00:00
Richard Biener
20003c3cc3 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
2018-03-09 13:29:39 +00:00
Andreas Krebbel
a4c6bd0821 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
2018-03-09 12:32:22 +00:00
Nathan Sidwell
d04e6ed5ae [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
2018-03-09 12:13:55 +00:00
Jakub Jelinek
77a5c1b62d 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
2018-03-09 10:58:49 +01:00
Eric Botcazou
00db1bf12b 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
2018-03-09 09:06:52 +00:00
François Dumont
5da6b01355 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
2018-03-09 05:56:07 +00:00
Jonathan Wakely
5dbbf8991d 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
2018-03-09 01:10:02 +00:00
Jonathan Wakely
311735dbc6 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
2018-03-09 01:09:58 +00:00
GCC Administrator
0bfd8ca928 Daily bump.
From-SVN: r258374
2018-03-09 00:16:13 +00:00
Jakub Jelinek
372e261580 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
2018-03-08 22:50:37 +01:00
Jason Merrill
80bac2eb06 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
2018-03-08 22:18:50 +01:00
Jakub Jelinek
86c6352c2f 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
2018-03-08 21:55:03 +01:00
Kyrylo Tkachov
c8574943c1 [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
2018-03-08 15:50:25 +00:00
Richard Biener
24545562ca 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
2018-03-08 14:41:39 +00:00
Richard Biener
7fea20f6b8 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
2018-03-08 12:56:40 +00:00
David Malcolm
8b9a03d644 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
2018-03-08 12:17:36 +00:00
Thomas Schwinge
24b830b6cd 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
2018-03-08 09:26:24 +00:00