- 19 Dec, 2017 35 commits
-
-
From-SVN: r255841
François Dumont committed -
gimple-ssa-sprintf.c (format_directive): Use inform_n instead of inform with hardcoded english plural handling. * gimple-ssa-sprintf.c (format_directive): Use inform_n instead of inform with hardcoded english plural handling. From-SVN: r255840
Jakub Jelinek committed -
re PR c++/82231 (ICE when deducing non-type template parameter value whose type depends on a non-type `auto` template parameter from function arguments) PR c++/82231 * g++.dg/cpp1z/nontype-auto14.C: New test. From-SVN: r255839
Marek Polacek committed -
PR tree-optimization/83477 * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis): For a non-virtual PHI, always push a new range. PR tree-optimization/83477 * gcc.c-torture/execute/pr83477.c: New test. From-SVN: r255837
Jeff Law committed -
gcc/ChangeLog: PR middle-end/77608 * builtins.c (compute_objsize): Handle non-constant offsets. gcc/testsuite/ChangeLog: PR middle-end/77608 * gcc.dg/Wstringop-overflow.c: New test. * gcc/testsuite/c-c++-common/Warray-bounds-3.c: Adjust. From-SVN: r255836
Martin Sebor committed -
PR tree-optimization/83444 * tree-ssa-strlen.c (strlen_check_and_optimize_stmt): For the character load case, if get_stridx on MEM_REF's operand doesn't look usable, retry with get_addr_stridx. * gcc.dg/strlenopt-38.c: New test. From-SVN: r255835
Jakub Jelinek committed -
Although debug markers are more useful when bind stmts are placed among them, there is value in keeping them even when VTA limits are exceeded. for gcc/ChangeLog PR debug/83422 * var-tracking.c (vt_debug_insns_local): Do not drop markers. (variable_tracking_main_1): Keep markers even when VTA fails. for gcc/testsuite/ChangeLog PR debug/83422 * gcc.dg/pr83422.c: New. From-SVN: r255834
Alexandre Oliva committed -
Emitting markers before labels turned out to not be worth the trouble. The markers outside BBs confuse the ebb scheduler, and they don't add any useful information. I'll arrange for markers to be moved past labels, even in gimple, but for now this will fix the two remaining known problems on ia64. for gcc/ChangeLog PR bootstrap/83396 * cfgexpand.c (expand_gimple_basic_block): Expand label first, even if there are markers before it. * cfgrtl.c (rtl_verify_bb_layout): Reject DEBUG_INSNs outside BBs. From-SVN: r255833
Alexandre Oliva committed -
PR testsuite/83454 * gcc.dg/tree-ssa/cswtch-4.c: Require nonpic effective target. * gcc.dg/tree-ssa/cswtch-5.c: Likewise. From-SVN: r255832
Jakub Jelinek committed -
* read-rtl.c (parse_reg_note_name): Replace Yoda conditions with typical order conditions. * sel-sched.c (extract_new_fences_from): Likewise. * config/visium/constraints.md (J, K, L): Likewise. * config/visium/predicates.md (const_shift_operand): Likewise. * config/visium/visium.c (visium_legitimize_address, visium_legitimize_reload_address): Likewise. * config/m68k/m68k.c (output_reg_adjust, emit_reg_adjust): Likewise. * config/arm/arm.c (arm_block_move_unaligned_straight): Likewise. * config/avr/constraints.md (Y01, Ym1, Y02, Ym2): Likewise. * config/avr/avr-log.c (avr_vdump, avr_log_set_avr_log, SET_DUMP_DETAIL): Likewise. * config/avr/predicates.md (const_8_16_24_operand): Likewise. * config/avr/avr.c (STR_PREFIX_P, avr_popcount_each_byte, avr_is_casesi_sequence, avr_casei_sequence_check_operands, avr_set_core_architecture, avr_set_current_function, avr_legitimize_reload_address, avr_asm_len, avr_print_operand, output_movqi, output_movsisf, avr_out_plus, avr_out_bitop, avr_out_fract, avr_adjust_insn_length, avr_encode_section_info, avr_2word_insn_p, output_reload_in_const, avr_has_nibble_0xf, avr_map_decompose, avr_fold_builtin): Likewise. * config/avr/driver-avr.c (avr_devicespecs_file): Likewise. * config/avr/gen-avr-mmcu-specs.c (str_prefix_p, print_mcu): Likewise. * config/i386/i386.c (ix86_parse_stringop_strategy_string): Likewise. * config/m32c/m32c-pragma.c (m32c_pragma_memregs): Likewise. * config/m32c/m32c.c (m32c_conditional_register_usage, m32c_address_cost): Likewise. * config/m32c/predicates.md (shiftcount_operand, longshiftcount_operand): Likewise. * config/iq2000/iq2000.c (iq2000_expand_prologue): Likewise. * config/nios2/nios2.c (nios2_handle_custom_fpu_insn_option, can_use_cdx_ldstw): Likewise. * config/nios2/nios2.h (CDX_REG_P): Likewise. * config/cr16/cr16.h (RETURN_ADDR_RTX, REGNO_MODE_OK_FOR_BASE_P): Likewise. * config/cr16/cr16.md (*mov<mode>_double): Likewise. * config/cr16/cr16.c (cr16_create_dwarf_for_multi_push): Likewise. * config/h8300/h8300.c (h8300_rtx_costs, get_shift_alg): Likewise. * config/vax/constraints.md (U06, U08, U16, CN6, S08, S16): Likewise. * config/vax/vax.c (adjacent_operands_p): Likewise. * config/ft32/constraints.md (L, b, KA): Likewise. * config/ft32/ft32.c (ft32_load_immediate, ft32_expand_prologue): Likewise. * cfgexpand.c (expand_stack_alignment): Likewise. * gcse.c (insert_expr_in_table): Likewise. * print-rtl.c (rtx_writer::print_rtx_operand_codes_E_and_V): Likewise. * cgraphunit.c (cgraph_node::expand): Likewise. * ira-build.c (setup_min_max_allocno_live_range_point): Likewise. * emit-rtl.c (add_insn): Likewise. * input.c (dump_location_info): Likewise. * passes.c (NEXT_PASS): Likewise. * read-rtl-function.c (parse_note_insn_name, function_reader::read_rtx_operand_r, function_reader::parse_mem_expr): Likewise. * sched-rgn.c (sched_rgn_init): Likewise. * diagnostic-show-locus.c (layout::show_ruler): Likewise. * combine.c (find_split_point, simplify_if_then_else, force_to_mode, if_then_else_cond, simplify_shift_const_1, simplify_comparison): Likewise. * explow.c (eliminate_constant_term): Likewise. * final.c (leaf_renumber_regs_insn): Likewise. * cfgrtl.c (print_rtl_with_bb): Likewise. * genhooks.c (emit_init_macros): Likewise. * poly-int.h (maybe_ne, maybe_le, maybe_lt): Likewise. * tree-data-ref.c (conflict_fn): Likewise. * selftest.c (assert_streq): Likewise. * expr.c (store_constructor_field, expand_expr_real_1): Likewise. * fold-const.c (fold_range_test, extract_muldiv_1, fold_truth_andor, fold_binary_loc, multiple_of_p): Likewise. * reload.c (push_reload, find_equiv_reg): Likewise. * et-forest.c (et_nca, et_below): Likewise. * dbxout.c (dbxout_symbol_location): Likewise. * reorg.c (relax_delay_slots): Likewise. * dojump.c (do_compare_rtx_and_jump): Likewise. * gengtype-parse.c (type): Likewise. * simplify-rtx.c (simplify_gen_ternary, simplify_gen_relational, simplify_const_relational_operation): Likewise. * reload1.c (do_output_reload): Likewise. * dumpfile.c (get_dump_file_info_by_switch): Likewise. * gengtype.c (type_for_name): Likewise. * gimple-ssa-sprintf.c (format_directive): Likewise. ada/ * gcc-interface/trans.c (Loop_Statement_to_gnu): Replace Yoda conditions with typical order conditions. * gcc-interface/misc.c (gnat_get_array_descr_info, default_pass_by_ref): Likewise. * gcc-interface/decl.c (gnat_to_gnu_entity): Likewise. * adaint.c (__gnat_tmp_name): Likewise. c-family/ * known-headers.cc (get_stdlib_header_for_name): Replace Yoda conditions with typical order conditions. c/ * c-typeck.c (comptypes_internal, function_types_compatible_p, perform_integral_promotions, digest_init): Replace Yoda conditions with typical order conditions. * c-decl.c (check_bitfield_type_and_width): Likewise. cp/ * name-lookup.c (get_std_name_hint): Replace Yoda conditions with typical order conditions. * class.c (check_bitfield_decl): Likewise. * pt.c (convert_template_argument): Likewise. * decl.c (duplicate_decls): Likewise. * typeck.c (commonparms): Likewise. fortran/ * scanner.c (preprocessor_line): Replace Yoda conditions with typical order conditions. * dependency.c (check_section_vs_section): Likewise. * trans-array.c (gfc_conv_expr_descriptor): Likewise. jit/ * jit-playback.c (get_type, playback::compile_to_file::copy_file, playback::context::acquire_mutex): Replace Yoda conditions with typical order conditions. * libgccjit.c (gcc_jit_context_new_struct_type, gcc_jit_struct_set_fields, gcc_jit_context_new_union_type, gcc_jit_context_new_function, gcc_jit_timer_pop): Likewise. * jit-builtins.c (matches_builtin): Likewise. * jit-recording.c (recording::compound_type::set_fields, recording::fields::write_reproducer, recording::rvalue::set_scope, recording::function::validate): Likewise. * jit-logging.c (logger::decref): Likewise. From-SVN: r255831
Jakub Jelinek committed -
In this bug we ICE when checking REGNO_OK_FOR_INDEX_P on arm during pre-IRA scheduling. This is because REGNO_OK_FOR_INDEX_P ends up checking the reg_renumber array. Before IRA reg_renumber is NULL and thus we segfault. The fix is to guard the use of reg_renumber in the logic in TEST_REGNO in arm.h. On aarch64, for example, we also guard against the reg_renumber == NULL case. This fixes the ICE. I also remove the part of the comment that muses on when reg_renumber is available as with this patch it should now be safe to use at any point. Bootstrapped and tested on arm-none-linux-gnueabihf. PR target/82975 * config/arm/arm.h (TEST_REGNO): Check reg_renumber is set before accessing it. Adjust comment. * gcc.dg/pr82975.c: New test. From-SVN: r255830
Kyrylo Tkachov committed -
re PR middle-end/81914 (gcc 7.1 generates branch for code which was branchless in earlier gcc version) PR middle-end/81914 * predict.c (zero_one_minusone): New function. (apply_return_prediction): Avoid return prediction for functions returning only -1, 0 and 1 values, unless they only return -1 and 0 or 0 and 1. From-SVN: r255829
Jakub Jelinek committed -
2017-12-19 Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc.c (legitimate_scaled_address_p): Clean fall-through warning. (arc_compute_frame_size): Remove unused variables. (arc_print_operand): Fix fprintif format. (arc_can_follow_jump): Clean fall-through warning. From-SVN: r255827
Claudiu Zissulescu committed -
From-SVN: r255826
Marek Polacek committed -
From-SVN: r255825
Marek Polacek committed -
PR c++/83490 * config/i386/i386.c (init_cumulative_args): Don't check TYPE_EMPTY_P on an error node. * g++.dg/abi/pr83490.C: New test. From-SVN: r255824
Marek Polacek committed -
From-SVN: r255823
Claudiu Zissulescu committed -
PR middle-end/83471 * g++.dg/torture/pr83471.C: New test. From-SVN: r255821
H.J. Lu committed -
https://gcc.gnu.org/ml/gcc-patches/2017-12/msg00377.html * opts.c (finish_options): Don't prefix dump_base_name if it already contains directories. From-SVN: r255820
Nathan Sidwell committed -
2017-12-19 Martin Liska <mliska@suse.cz> * gcc.dg/tree-prof/switch-case-1.c: Scan IPA profile dump file instead of expand in order to not mix it with expanded tree decision tree for the switch statement. From-SVN: r255819
Martin Liska committed -
2017-12-19 Martin Liska <mliska@suse.cz> PR rtl-optimization/82675 * loop-unroll.c (unroll_loop_constant_iterations): Allocate one more element in sbitmap. From-SVN: r255818
Martin Liska committed -
PR tree-optimization/83482 * g++.dg/torture/pr83482.C: New test. From-SVN: r255817
Marek Polacek committed -
2017-12-19 Paolo Carlini <paolo.carlini@oracle.com> * gimplify.c (gimplify_expr): Use error_operand_p. From-SVN: r255816
Paolo Carlini committed -
2017-12-19 Paolo Carlini <paolo.carlini@oracle.com> * cp-tree.h: Fix typo in comment. From-SVN: r255815
Paolo Carlini committed -
2017-12-19 Martin Jambor <mjambor@suse.cz> PR tree-optimization/83329 * gcc.dg/tree-ssa/pr83329.c: New test From-SVN: r255814
Martin Jambor committed -
2017-12-19 Paolo Carlini <paolo.carlini@oracle.com> PR c++/79490 * g++.dg/other/fsyntax-only2.C: New. From-SVN: r255812
Paolo Carlini committed -
re PR ada/66205 (gnatbind generates invalid code when finalization is enabled in restricted runtime) PR ada/66205 * bindgen.adb (Gen_AdaFinal): Revert previous change. From-SVN: r255811
Arnaud Charlet committed -
gcc/ PR target/83387 * config/rs6000/t-rtems (MULTILIB_REQUIRED): Remove 64-bit soft-float multilib. From-SVN: r255809
Sebastian Huber committed -
In some cases the jump could be to a return instruction and in those cases the next_active_insn() function tries to follow an invalid pointer which leads to a crash. This error did not manifest when using a 32-bit version of GCC which is why I did not detect it before. gcc/ * config/sparc/sparc.c (sparc_do_work_around_errata): Make sure the jump is to a label. From-SVN: r255807
Daniel Cederman committed -
PR tree-optimization/83444 * tree-ssa-strlen.c (strlen_check_and_optimize_stmt): Optimize character loads. * gcc.dg/strlenopt-38.c: New test. From-SVN: r255806
Jakub Jelinek committed -
PR ipa/82801 PR ipa/83346 * ipa-inline.c (flatten_remove_node_hook): New function. (ipa_inline): Keep only nodes with flatten attribute at the end of the array in the order from ipa_reverse_postorder, only walk that portion of array for flattening, if there is more than one such node, temporarily register a removal hook and ignore removed nodes. * g++.dg/ipa/pr82801.C: New test. From-SVN: r255805
Jakub Jelinek committed -
PR tree-optimization/80631 * tree-vect-loop.c (vect_create_epilog_for_reduction): Compare induc_code against MAX_EXPR or MIN_EXPR instead of reduc_fn against IFN_REDUC_MAX or IFN_REDUC_MIN. From-SVN: r255804
Jakub Jelinek committed -
tree-ssa-dom.c (record_equivalences_from_phis): Do not record symbolic equivalences from backedges in the CFG. * tree-ssa-dom.c (record_equivalences_from_phis): Do not record symbolic equivalences from backedges in the CFG. From-SVN: r255803
Jeff Law committed -
2017-11-19 Jeff Law <law@redhat.com> * tree-ssa-dom.c (record_equivalences_from_phis): Fix handling of degenerates resulting from ignoring an edge. From-SVN: r255802
Jeff Law committed -
From-SVN: r255795
GCC Administrator committed
-
- 18 Dec, 2017 5 commits
-
-
PR middle-end/83373 - False positive reported by -Wstringop-overflow PR tree-optimization/78450 - strlen(s) return value can be assumed to be less than the size of s gcc/ChangeLog: PR middle-end/83373 PR tree-optimization/78450 * tree-ssa-strlen.c (maybe_set_strlen_range): New function. (handle_builtin_strlen): Call it. gcc/testsuite/ChangeLog: PR middle-end/83373 PR tree-optimization/78450 * gcc.dg/pr83373.c: New test. * gcc.dg/strlenopt-36.c: New test. * gcc.dg/strlenopt-37.c: New test. From-SVN: r255790
Martin Sebor committed -
2017-11-20 François Dumont <fdumont@gcc.gnu.org> PR libstdc++/80761 * include/debug/map.h (std::__debug::map<>::insert_return_type): Define using _Node_insert_return. * include/debug/set.h (std::__debug::set<>::insert_return_type): Likewise. * include/debug/unordered_map: (std::__debug::unordered_map<>::insert_return_type): Likewise. * include/debug/unordered_set: (std::__debug::unordered_set<>::insert_return_type): Likewise. From-SVN: r255789
François Dumont committed -
PR c++/83116 * constexpr.c (cxx_eval_call_expression): Only look into constexpr_call_table if ctx->strict. * g++.dg/cpp1y/constexpr-83116.C: New test. From-SVN: r255788
Marek Polacek committed -
In PR83424 combine's move_deaths puts a REG_DEAD note in the wrong place because dead_or_set_regno_p does not account for CLOBBER insns. This fixes it. PR rtl-optimization/83424 * rtlanal.c (dead_or_set_regno_p): Handle CLOBBER just like SET. gcc/testsuite/ PR rtl-optimization/83424 * gcc.dg/pr83424.c: New testsuite. From-SVN: r255787
Segher Boessenkool committed -
In theory, the diagnostics subsystem can print context information on code inlining when diagnostics are emitted by the middle-end, describing the chain of inlined callsites that led to a particular warning, but PR tree-optimization/83336 describes various issues with this. An underlying issue is that we have very little automated testing for this code: gcc.dg/tm/pr52141.c has a test, but in general, prune.exp filters out the various "inlined from" lines. The following patch adds test coverage for it for C and C++ via a new testsuite plugin, which emits a warning from the middle-end; the test cases use dg-regexp to verify that the "inlined from" lines are emitted correctly, with the correct function names and source locations. Doing so requires a change to prune.exp: the dg-regexp lines have to be handled *before* the "inlined from" lines are stripped. gcc/testsuite/ChangeLog: PR tree-optimization/83336 * g++.dg/cpp0x/missing-initializer_list-include.C: Update for changes to prune.exp's handling of dg-regexp. * g++.dg/plugin/diagnostic-test-inlining-1.C: New test case. * g++.dg/plugin/plugin.exp (plugin_test_list): Add it, via gcc.dg's plugin/diagnostic_plugin_test_inlining.c. * gcc.dg/plugin/diagnostic-test-inlining-1.c: New test case. * gcc.dg/plugin/diagnostic-test-inlining-2.c: Likewise. * gcc.dg/plugin/diagnostic-test-inlining-3.c: Likewise. * gcc.dg/plugin/diagnostic-test-inlining-4.c: Likewise. * gcc.dg/plugin/diagnostic_plugin_test_inlining.c: New test plugin. * gcc.dg/plugin/plugin.exp (plugin_test_list): Add them. * lib/prune.exp (prune_gcc_output): Move call to handle-dg-regexps to before the various text stripping regsup invocations, in particular, to before the stripping of "inlined from". From-SVN: r255786
David Malcolm committed
-