- 08 Mar, 2018 12 commits
-
-
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
Richard Biener committed -
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
David Malcolm committed -
2018-03-08 Thomas Schwinge <thomas@codesourcery.com> * lib/target-supports.exp: Do not return zero from a ifunc function. From-SVN: r258362
Thomas Schwinge committed -
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
Richard Biener committed -
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
Martin Liska committed -
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
Alexandre Oliva committed -
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
Jakub Jelinek committed -
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
Jakub Jelinek committed -
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
François Dumont committed -
gcc/testsuite/ChangeLog: * gcc.dg/Wrestrict-13.c: New test. From-SVN: r258348
Martin Sebor committed -
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
Steven G. Kargl committed -
From-SVN: r258345
GCC Administrator committed
-
- 07 Mar, 2018 16 commits
-
-
* 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
Jakub Jelinek committed -
* lambda.c (is_capture_proxy_with_ref): Remove. * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust. From-SVN: r258341
Jason Merrill committed -
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
Segher Boessenkool committed -
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
Martin Sebor committed -
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
Eric Botcazou committed -
Reviewed-on: https://go-review.googlesource.com/99117 From-SVN: r258337
Ian Lance Taylor committed -
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
Ian Lance Taylor committed -
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
Sebastian Huber committed -
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
Jakub Jelinek committed -
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
Jakub Jelinek committed -
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
Jakub Jelinek committed -
From-SVN: r258314
Denis Chertykov committed -
* 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
John David Anglin committed -
2018-03-06 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/64107 * gfortran.dg/pr64107.f90: New test. From-SVN: r258311
Steven G. Kargl committed -
* config/pa/fptr.c (_dl_read_access_allowed): New. (__canonicalize_funcptr_for_compare): Use it. From-SVN: r258310
John David Anglin committed -
From-SVN: r258309
GCC Administrator committed
-
- 06 Mar, 2018 12 commits
-
-
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
Thomas Koenig committed -
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
Ville Voutilainen committed -
PR c++/84684 * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated arguments. * g++.dg/cpp1z/constexpr-84684.C: New test. From-SVN: r258303
Marek Polacek committed -
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
Jakub Jelinek committed -
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
Jakub Jelinek committed -
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
Steven G. Kargl committed -
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
Eric Botcazou committed -
From-SVN: r258276
Eric Botcazou committed -
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
Claudiu Zissulescu committed -
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
Jakub Jelinek committed -
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
Jakub Jelinek committed -
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
Alexandre Oliva committed
-