Commit Graph

160122 Commits

Author SHA1 Message Date
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
Richard Biener
de341bf0fb 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
2018-03-08 09:23:44 +00:00
Martin Liska
5223e95ac2 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
2018-03-08 09:05:26 +00:00
Alexandre Oliva
bc7b0ffa63 [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
2018-03-08 08:27:56 +00:00
Jakub Jelinek
ce8b1a1f13 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
2018-03-08 08:29:42 +01:00
Jakub Jelinek
686faaece3 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
2018-03-08 07:56:59 +01:00
François Dumont
fe6bd21a0b 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
2018-03-08 06:26:15 +00:00
Martin Sebor
1b1a188198 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
2018-03-07 17:56:07 -07:00
Steven G. Kargl
00df7c36f5 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
2018-03-08 00:42:41 +00:00
GCC Administrator
4b7b455cf9 Daily bump.
From-SVN: r258345
2018-03-08 00:16:14 +00:00
Jakub Jelinek
1c883d03cf 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
2018-03-07 22:59:09 +01:00
Jason Merrill
68ad1bf7d0 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
2018-03-07 16:04:18 -05:00
Segher Boessenkool
335b7b5ad2 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
2018-03-07 21:27:11 +01:00
Martin Sebor
a76acaedce 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
2018-03-07 12:30:31 -07:00
Eric Botcazou
b78b513e41 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
2018-03-07 15:54:59 +00:00
Ian Lance Taylor
123ba0918c runtime: push arena on AIX higher due to clashes
Reviewed-on: https://go-review.googlesource.com/99117

From-SVN: r258337
2018-03-07 15:22:46 +00:00
Ian Lance Taylor
2dab5d909f 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
2018-03-07 14:31:03 +00:00
Sebastian Huber
6cde8c545b 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
2018-03-07 12:10:24 +00:00
Jakub Jelinek
454144fcc5 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
2018-03-07 11:39:32 +01:00
Jakub Jelinek
b6f03d1312 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
2018-03-07 10:19:36 +01:00
Jakub Jelinek
0f1de8d013 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
2018-03-07 10:16:07 +01:00
Denis Chertykov
d06202a0cb Fix Changelog commit errro.
From-SVN: r258314
2018-03-07 11:53:33 +03:00
John David Anglin
9250872b8d 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
2018-03-07 00:47:41 +00:00
Steven G. Kargl
1d792a6d0e 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
2018-03-07 00:25:30 +00:00
John David Anglin
66a00b11a0 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
2018-03-07 00:17:32 +00:00
GCC Administrator
c0423c3e71 Daily bump.
From-SVN: r258309
2018-03-07 00:16:24 +00:00
Thomas Koenig
5867bb9a60 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
2018-03-06 23:50:01 +00:00
Ville Voutilainen
447346e465 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
2018-03-06 23:43:03 +02:00
Marek Polacek
1dc2350519 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
2018-03-06 21:11:46 +00:00
Jakub Jelinek
849bbdb99c 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
2018-03-06 21:57:30 +01:00
Jakub Jelinek
2728bf8f13 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
2018-03-06 21:41:37 +01:00
Steven G. Kargl
284ee475e1 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
2018-03-06 19:05:48 +00:00
Eric Botcazou
2128896318 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
2018-03-06 12:21:27 +00:00
Eric Botcazou
0d6091d924 * gcc-interface/utils.c (def_builtin_1): Bail out on error_mark_node.
From-SVN: r258276
2018-03-06 12:09:33 +00:00
Claudiu Zissulescu
b51addd6e1 [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
2018-03-06 12:50:16 +01:00
Jakub Jelinek
155958ddfe 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
2018-03-06 10:23:36 +01:00
Jakub Jelinek
16ef0a8cb7 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
2018-03-06 08:06:44 +01:00
Alexandre Oliva
23d63b459c [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
2018-03-06 06:25:12 +00:00
Alexandre Oliva
2e1a7ecb2d [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
2018-03-06 06:24:53 +00:00
Alexandre Oliva
1ea71a82f9 [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
2018-03-06 06:24:40 +00:00
Bill Schmidt
4900146ce0 rs6000-builtin.def (rs6000_speculation_barrier): Rename to ppc_speculation_barrier.
[gcc]

2018-03-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
	Rename to ppc_speculation_barrier.
	* config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
	__builtin_ppc_speculation_barrier.

[gcc/testsuite]

2018-03-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* gcc.target/powerpc/spec-barr-1.c: Change called function name to
	__builtin_ppc_speculation_barrier.

From-SVN: r258268
2018-03-06 01:56:41 +00:00
GCC Administrator
f75fbd29fb Daily bump.
From-SVN: r258267
2018-03-06 00:16:23 +00:00
Jason Merrill
91e534b0d4 PR c++/84708 - ICE with lambda in local class NSDMI.
* lambda.c (lambda_expr_this_capture): Handle local class NSDMI
	context.

From-SVN: r258264
2018-03-05 17:14:38 -05:00
Jakub Jelinek
9a25c5ce6e re PR target/84700 (ICE on 32-bit BE powerpc targets w/ -misel -O1)
PR target/84700
	* combine.c (combine_simplify_rtx): Don't try to simplify if
	if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
	are equal to x.

	* gcc.target/powerpc/pr84700.c: New test.

From-SVN: r258263
2018-03-05 23:13:58 +01:00
Jakub Jelinek
46cf7fa13b re PR c++/84684 (inserting random code / flags produces wrong code)
PR c++/84684
	* constexpr.c (constexpr_call_hasher::equal): Return false if
	lhs->hash != rhs->hash.  Change return 1 to return true and
	return 0 to return false.

From-SVN: r258262
2018-03-05 23:12:45 +01:00
Segher Boessenkool
34b01e681e rs6000: Don't align tiny loops to 32 bytes for POWER9
For POWER4..POWER8 we align loops of 5..8 instructions to 32 bytes
(instead of to 16 bytes) because that executes faster.  This is no
longer the case on POWER9, so we can just as well only align to 16
bytes.


	* config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
	to 32 bytes when compiling for POWER9.

From-SVN: r258260
2018-03-05 20:11:54 +01:00
Ian Lance Taylor
14710257c1 libgo: fix typo in mksysinfo.sh script
Fix a small typo in the mksysinfo.sh script (incorrect input
    file for a grep command).
    
    Reviewed-on: https://go-review.googlesource.com/98635

From-SVN: r258259
2018-03-05 18:44:44 +00:00
Nathan Sidwell
f7af3ad637 [PR c++/84702] ICE with default tmpl arg of overload set
https://gcc.gnu.org/ml/gcc-patches/2018-03/msg00227.html
	PR c++/84702
	* pt.c (process_template_arg): Mark lookup_keep on a default arg.

	PR c++/84702
	* g++.dg/lookup/pr84702.C: New.

From-SVN: r258258
2018-03-05 18:44:24 +00:00
Jakub Jelinek
537400180d re PR target/84564 (error: unable to find a register to spill with -mforce-indirect-call)
PR target/84564
	* config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
	regparm >= 3 with no arg reg available also for calls with
	flag_force_indirect_call.  Pass decl to ix86_function_regparm.

	* gcc.target/i386/pr84564.c: New test.

From-SVN: r258256
2018-03-05 17:24:43 +01:00