1. 28 Aug, 2019 7 commits
  2. 27 Aug, 2019 16 commits
    • PR tree-optimization/91567 - Spurious -Wformat-overflow warnings building glibc (32-bit only) · 407b92bc
      gcc/ChangeLog:
      
      	PR tree-optimization/91567
      	* gimple-ssa-sprintf.c (get_string_length): Handle more forms of lengths
      	of unknown strings.
      	* vr-values.c (vr_values::extract_range_basic): Set strlen upper bound
      	to PTRDIFF_MAX - 2.
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/91567
      	* gcc.dg/tree-ssa/builtin-snprintf-6.c: Xfail a subset of assertions
      	on targets other than x86_64 to work around PR 83543.
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-22.c: New test.
      
      From-SVN: r274976
      Martin Sebor committed
    • tree-ssa-strlen.c (printf_strlen_execute): Initialize the loop optimizer and… · 2d8ba441
      tree-ssa-strlen.c (printf_strlen_execute): Initialize the loop optimizer and SCEV before sizing ssa_ver_to_stridx.
      
      	* tree-ssa-strlen.c (printf_strlen_execute): Initialize
      	the loop optimizer and SCEV before sizing ssa_ver_to_stridx.
      
      	* gcc.c-torture/compile/20190827-1.c: New test.
      
      From-SVN: r274975
      Jeff Law committed
    • re PR fortran/91496 (!GCC$ directives error if mistyped or unknown) · 2bd86b95
      2019-08-27  Harald Anlauf  <anlauf@gmx.de>
      
      	PR fortran/91496
      	* gfortran.h: Extend struct gfc_iterator for loop annotations.
      	* array.c (gfc_copy_iterator): Copy loop annotations by IVDEP,
      	VECTOR, and NOVECTOR pragmas.
      	* decl.c (gfc_match_gcc_ivdep, gfc_match_gcc_vector)
      	(gfc_match_gcc_novector): New matcher functions handling IVDEP,
      	VECTOR, and NOVECTOR pragmas.
      	* match.h: Declare prototypes of matcher functions handling IVDEP,
      	VECTOR, and NOVECTOR pragmas.
      	* parse.c (decode_gcc_attribute, parse_do_block)
      	(parse_executable): Decode IVDEP, VECTOR, and NOVECTOR pragmas;
      	emit warning for unrecognized pragmas instead of error.
      	* trans-stmt.c (gfc_trans_simple_do, gfc_trans_do): Add code to
      	emit annotations for IVDEP, VECTOR, and NOVECTOR pragmas.
      	* gfortran.texi: Document IVDEP, VECTOR, and NOVECTOR pragmas.
      
      	PR fortran/91496
      	* gfortran.dg/pr91496.f90: New testcase.
      
      From-SVN: r274966
      Harald Anlauf committed
    • sse4_1-round-roundeven-1.c (dg-options): Add -mfpmath=sse. · 340d34bf
      	* gcc.target/i386/sse4_1-round-roundeven-1.c (dg-options):
      	Add -mfpmath=sse.
      	* gcc.target/i386/sse4_1-round-roundeven-2.c (dg-options): Ditto.
      
      From-SVN: r274964
      Uros Bizjak committed
    • re PR target/91528 (ICE in ix86_expand_prologue at i386.c:7844 since r274481) · c1441faf
      	PR target/91528
      	* config/i386/i386-features.c (convert_scalars_to_vector):
      	Update crtl->stack_realign_needed, crtl->stack_realign_tried and
      	crtl->stack_realign_processed.  Update crtl->drap_reg by calling
      	targetm.calls.get_drap_rtx.  If drap_rtx is non-null then
      	Update crtl->args.internal_arg_pointer and call fixup_tail_calls.
      
      testsuite/ChangeLog:
      
      	PR target/91528
      	* gcc.target/i386/pr91528.c: New test.
      
      From-SVN: r274962
      Uros Bizjak committed
    • re PR c++/83431 (-Wformat-truncation may incorrectly report truncation) · c8935981
      gcc/testsuite/ChangeLog:
      
      	PR c++/83431
      	PR testsuite/91562
      	* gcc.dg/strlenopt-8.c: Adjust pass/dump name.
      
      From-SVN: r274961
      Martin Sebor committed
    • Options documentation fixes. · f4436343
      Ensure that options lists fit cleanly inside the margins of a PDF page.
      Reword description of option -ffrontend-loop-interchange so that it fits
      cleanly inside the margins of a PDF page. Add options to those enabled
      by -fdec.
      
      From-SVN: r274958
      Mark Eggleston committed
    • libgo: rebuild runtime.inc if mkruntimeinc.sh changes · 433f84bf
          
          The Makefile was missing a dependency.
          
          Also remove runtime.inc.raw in mostlyclean.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/191958
      
      From-SVN: r274956
      Ian Lance Taylor committed
    • Share a prevailing name for remove debug info symbols w/ LTO. · d23db385
      2019-08-27  Martin Liska  <mliska@suse.cz>
      
      	PR lto/91478
      	* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
      	First find a WEAK HIDDEN symbol in symbol table that will be
      	preserved.  Later, use the symbol name for all removed symbols.
      
      From-SVN: r274955
      Martin Liska committed
    • 2019-08-27 Richard Biener <rguenther@suse.de> · b5a6addb
      	* config/i386/i386-features.h
      	(general_scalar_chain::~general_scalar_chain): Add.
      	(general_scalar_chain::insns_conv): New bitmap.
      	(general_scalar_chain::n_sse_to_integer): New.
      	(general_scalar_chain::n_integer_to_sse): Likewise.
      	(general_scalar_chain::make_vector_copies): Adjust signature.
      	* config/i386/i386-features.c
      	(general_scalar_chain::general_scalar_chain): Outline,
      	initialize new members.
      	(general_scalar_chain::~general_scalar_chain): New.
      	(general_scalar_chain::mark_dual_mode_def): Record insns
      	we need to insert conversions at and count them.
      	(general_scalar_chain::compute_convert_gain): Account
      	for conversion instructions at chain boundary.
      	(general_scalar_chain::make_vector_copies): Generate a single
      	copy for a def by a specific insn.
      	(general_scalar_chain::convert_registers): First populate
      	defs_map, then make copies at out-of chain insns.
      
      From-SVN: r274953
      Richard Biener committed
    • re PR c++/91415 (Invalid warning for C++17 sequencing of shift operator E1<<E2.) · 6a074892
      	PR c++/91415
      	* c-common.c (verify_tree): For LSHIFT_EXPR, RSHIFT_EXPR,
      	COMPONENT_REF and ARRAY_REF in cxx_dialect >= cxx17 mode handle it
      	like COMPOUND_EXPR rather than normal expression.
      
      	* g++.dg/warn/sequence-pt-4.C: New test.
      
      From-SVN: r274952
      Jakub Jelinek committed
    • re PR testsuite/91549 (gcc.dg/wrapped-binop-simplify.c fails starting with r274925) · 6c14d008
      PR testsuite/91549
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/wrapped-binop-simplify.c: Test only on x86, s390 with lp64.
      
      From-SVN: r274951
      Robin Dapp committed
    • re PR libgomp/91530 (Several libgomp.*/scan-* tests FAIL without avx_runtime) · 0ad7981c
      	PR libgomp/91530
      	* testsuite/libgomp.c/scan-11.c: Add -msse2 option for sse2_runtime
      	targets.
      	* testsuite/libgomp.c/scan-12.c: Likewise.
      	* testsuite/libgomp.c/scan-13.c: Likewise.
      	* testsuite/libgomp.c/scan-14.c: Likewise.
      	* testsuite/libgomp.c/scan-15.c: Likewise.
      	* testsuite/libgomp.c/scan-16.c: Likewise.
      	* testsuite/libgomp.c/scan-17.c: Likewise.
      	* testsuite/libgomp.c/scan-18.c: Likewise.
      	* testsuite/libgomp.c/scan-19.c: Likewise.
      	* testsuite/libgomp.c/scan-20.c: Likewise.
      	* testsuite/libgomp.c++/scan-9.C: Likewise.
      	* testsuite/libgomp.c++/scan-10.C: Likewise.
      	* testsuite/libgomp.c++/scan-11.C: Likewise.
      	* testsuite/libgomp.c++/scan-12.C: Likewise.
      	* testsuite/libgomp.c++/scan-14.C: Likewise.
      	* testsuite/libgomp.c++/scan-15.C: Likewise.
      	* testsuite/libgomp.c++/scan-13.C: Likewise.  Use sse2_runtime
      	instead of i?86-*-* x86_64-*-* as target for scan-tree-dump-times.
      	* testsuite/libgomp.c++/scan-16.C: Likewise.
      
      From-SVN: r274947
      Jakub Jelinek committed
    • [arm/aarch64] Add comments warning that stack-protector initializer insns shouldn't be split · a7e73b41
      Following the publication of https://kb.cert.org/vuls/id/129209/ I've
      been having a look at GCC's implementation for Arm and AArch64.  I
      haven't identified any issues yet, but it's a bit early to be
      completely sure.
      
      One observation, however, is that the instruction sequence that
      initializes the stack canary might be vulnerable to producing a
      reusable value if it were ever split early.  I don't think we ever
      would, because the memory locations involved with the stack protector
      are all marked volatile to ensure that the values are only loaded at
      the point in time when the test is intended to happen, and that also
      has the effect of making it unlikely that the value would be reused
      without reloading.  Nevertheless, defence in depth is probably
      warranted here.
      
      So this patch just adds some comments warning that the patterns should
      not be split.
      
      	* config/arm/arm.md (stack_protect_set_insn): Add security-related
      	comment.
      	* config/aarch64/aarch64.md (stack_protect_set_<mode>): Likewise.
      
      From-SVN: r274946
      Richard Earnshaw committed
    • Fix new clang warnings. · 72bb85f8
      2019-08-27  Martin Liska  <mliska@suse.cz>
      
      	* cgraph.c (cgraph_node::remove): Remove dead assignment before
      	loop.
      	* config/i386/i386-features.c (scalar_chain::emit_conversion_insns):
      	Enclose in anonymous namespace.
      	* config/i386/x86-tune-costs.h (struct processor_costs): Wrap
      	hard_register initialization in braces.
      	* tree-vrp.h (value_range_base::supports_type_p): Return false
      	for function with boolean return type.
      
      From-SVN: r274945
      Martin Liska committed
    • Daily bump. · e80f4068
      From-SVN: r274944
      GCC Administrator committed
  3. 26 Aug, 2019 16 commits
    • re PR fortran/91390 (treatment of extra parameter in a subroutine call) · 7a56096c
      2019-08-26  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/91390
      	PR fortran/91473
      	* frontend-passes.c (gfc_check_externals): Make
      	gfc_errors_to_warnings conditional on -fallow-argument-mismatch.
      	* invoke.texi: Document -fallow-argument-mismatch.
      	* lang.opt: Add -fallow-argument-mismatch.
      
      2019-08-26  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/91390
      	PR fortran/91473
      	* gfortran.dg/used_before_typed_4.f90: Change warning to error.
      	* gfortran.dg/argument_checking_20.f90: New test.
      
      From-SVN: r274937
      Thomas Koenig committed
    • compiler: generalize cleanup of unresolved placeholder pointer types · 4d67cae5
          
          This change extends the work in https://golang.org/cl/51131 to include
          placeholder pointer types created for Go function types, which can
          also be left dangling/unresolved in some instances. This fixes an
          assert in Llvm_backend::materializeComposite.
          
          Test case can be found in https://golang.org/cl/191743.
          
          Updates golang/go#33020.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/191744
      
      From-SVN: r274935
      Ian Lance Taylor committed
    • i386.c (emit_i387_cw_initialization): Fix masking operand value. · 0e883151
      	* config/i386/i386.c (emit_i387_cw_initialization)
      	<case I387_CW_ROUNDEVEN>: Fix masking operand value.
      
      From-SVN: r274934
      Uros Bizjak committed
    • PR tree-optimization/83431 - -Wformat-truncation may incorrectly report truncation · 22fca489
      gcc/ChangeLog:
      
      	PR c++/83431
      	* gimple-ssa-sprintf.c (pass_data_sprintf_length): Remove object.
      	(sprintf_dom_walker): Remove class.
      	(get_int_range): Make argument const.
      	(directive::fmtfunc, directive::set_precision): Same.
      	(format_none): Same.
      	(build_intmax_type_nodes): Same.
      	(adjust_range_for_overflow): Same.
      	(format_floating): Same.
      	(format_character): Same.
      	(format_string): Same.
      	(format_plain): Same.
      	(get_int_range): Cast away constness.
      	(format_integer): Same.
      	(get_string_length): Call get_range_strlen_dynamic.  Handle
      	null lendata.maxbound.
      	(should_warn_p): Adjust argument scope qualifier.
      	(maybe_warn): Same.
      	(format_directive): Same.
      	(parse_directive): Same.
      	(is_call_safe): Same.
      	(try_substitute_return_value): Same.
      	(sprintf_dom_walker::handle_printf_call): Rename...
      	(handle_printf_call): ...to this.  Initialize target to host charmap
      	here instead of in pass_sprintf_length::execute.
      	(struct call_info): Make global.
      	(sprintf_dom_walker::compute_format_length): Make global.
      	(sprintf_dom_walker::handle_gimple_call): Same.
      	* passes.def (pass_sprintf_length): Replace with pass_strlen.
      	* print-rtl.c (print_pattern): Reduce the number of spaces to
      	avoid -Wformat-truncation.
      	* tree-pass.h (make_pass_warn_printf): New function.
      	* tree-ssa-strlen.c (strlen_optimize): New variable.
      	(get_string_length): Add comments.
      	(get_range_strlen_dynamic): New function.
      	(check_and_optimize_call): New function.
      	(handle_integral_assign): New function.
      	(strlen_check_and_optimize_stmt): Factor code out into
      	strlen_check_and_optimize_call and handle_integral_assign.
      	(strlen_dom_walker::evrp): New member.
      	(strlen_dom_walker::before_dom_children): Use evrp member.
      	(strlen_dom_walker::after_dom_children): Use evrp member.
      	(printf_strlen_execute): New function.
      	(pass_strlen::gate): Update to handle printf calls.
      	(dump_strlen_info): New function.
      	(pass_data_warn_printf): New variable.
      	(pass_warn_printf): New class.
      	* tree-ssa-strlen.h (get_range_strlen_dynamic): Declare.
      	(handle_printf_call): Same.
      	* tree-vrp.c (value_range_base::type): Adjust assertion.
      	* vr-values.c (vr_values::update_value_range): Use type of the first
      	argument rather than the second.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/83431
      	* gcc.dg/strlenopt-63.c: New test.
      	* gcc.dg/pr79538.c: Adjust text of expected warning.
      	* gcc.dg/pr81292-1.c: Adjust pass name.
      	* gcc.dg/pr81292-2.c: Same.
      	* gcc.dg/pr81703.c: Same.
      	* gcc.dg/strcmpopt_2.c: Same.
      	* gcc.dg/strcmpopt_3.c: Same.
      	* gcc.dg/strcmpopt_4.c: Same.
      	* gcc.dg/strlenopt-1.c: Same.
      	* gcc.dg/strlenopt-10.c: Same.
      	* gcc.dg/strlenopt-11.c: Same.
      	* gcc.dg/strlenopt-13.c: Same.
      	* gcc.dg/strlenopt-14g.c: Same.
      	* gcc.dg/strlenopt-14gf.c: Same.
      	* gcc.dg/strlenopt-15.c: Same.
      	* gcc.dg/strlenopt-16g.c: Same.
      	* gcc.dg/strlenopt-17g.c: Same.
      	* gcc.dg/strlenopt-18g.c: Same.
      	* gcc.dg/strlenopt-19.c: Same.
      	* gcc.dg/strlenopt-1f.c: Same.
      	* gcc.dg/strlenopt-2.c: Same.
      	* gcc.dg/strlenopt-20.c: Same.
      	* gcc.dg/strlenopt-21.c: Same.
      	* gcc.dg/strlenopt-22.c: Same.
      	* gcc.dg/strlenopt-22g.c: Same.
      	* gcc.dg/strlenopt-24.c: Same.
      	* gcc.dg/strlenopt-25.c: Same.
      	* gcc.dg/strlenopt-26.c: Same.
      	* gcc.dg/strlenopt-27.c: Same.
      	* gcc.dg/strlenopt-28.c: Same.
      	* gcc.dg/strlenopt-29.c: Same.
      	* gcc.dg/strlenopt-2f.c: Same.
      	* gcc.dg/strlenopt-3.c: Same.
      	* gcc.dg/strlenopt-30.c: Same.
      	* gcc.dg/strlenopt-31g.c: Same.
      	* gcc.dg/strlenopt-32.c: Same.
      	* gcc.dg/strlenopt-33.c: Same.
      	* gcc.dg/strlenopt-33g.c: Same.
      	* gcc.dg/strlenopt-34.c: Same.
      	* gcc.dg/strlenopt-35.c: Same.
      	* gcc.dg/strlenopt-4.c: Same.
      	* gcc.dg/strlenopt-48.c: Same.
      	* gcc.dg/strlenopt-49.c: Same.
      	* gcc.dg/strlenopt-4g.c: Same.
      	* gcc.dg/strlenopt-4gf.c: Same.
      	* gcc.dg/strlenopt-5.c: Same.
      	* gcc.dg/strlenopt-50.c: Same.
      	* gcc.dg/strlenopt-51.c: Same.
      	* gcc.dg/strlenopt-52.c: Same.
      	* gcc.dg/strlenopt-53.c: Same.
      	* gcc.dg/strlenopt-54.c: Same.
      	* gcc.dg/strlenopt-55.c: Same.
      	* gcc.dg/strlenopt-56.c: Same.
      	* gcc.dg/strlenopt-6.c: Same.
      	* gcc.dg/strlenopt-61.c: Same.
      	* gcc.dg/strlenopt-7.c: Same.
      	* gcc.dg/strlenopt-8.c: Same.
      	* gcc.dg/strlenopt-9.c: Same.
      	* gcc.dg/strlenopt.h (snprintf, snprintf): Declare.
      	* gcc.dg/tree-ssa/builtin-snprintf-6.c: New test.
      	* gcc.dg/tree-ssa/builtin-snprintf-7.c: New test.
      	* gcc.dg/tree-ssa/builtin-snprintf-8.c: New test.
      	* gcc.dg/tree-ssa/builtin-snprintf-9.c: New test.
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-21.c: New test.
      	* gcc.dg/tree-ssa/dump-4.c: New test.
      	* gcc.dg/tree-ssa/pr83501.c: Adjust pass name.
      
      From-SVN: r274933
      Martin Sebor committed
    • * ChangeLog: Fix roundeven entry. · f7cf1751
      From-SVN: r274931
      Uros Bizjak committed
    • PR c++/91545 - ICE in constexpr store evaluation. · 7d349dd8
      	* constexpr.c (cxx_eval_store_expression): Check FIELD_DECL instead
      	of DECL_P.
      
      	* g++.dg/cpp0x/pr91545.C: New test.
      
      From-SVN: r274930
      Marek Polacek committed
    • i386-features.c (general_remove_non_convertible_regs): Remove. · d2ea2406
      2019-08-26  Richard Biener  <rguenther@suse.de>
      
      	* config/i386/i386-features.c (general_remove_non_convertible_regs):
      	Remove.
      	(convert_scalars_to_vector): Do not call it.
      
      From-SVN: r274929
      Richard Biener committed
    • i386: Roundeven expansion for SSE4.1+ · d3b92f35
      gcc/ChangeLog:
      
      2019-08-26  Tejas Joshi  <tejasjoshi9673@gmail.com>
                  Uros Bizjak  <ubizjak@gmail.com>
      
      	* builtins.c (mathfn_built_in_2): Change CASE_MATHFN to
      	CASE_MATHFN_FLOATN for roundeven.
      	* config/i386/i386.c (ix86_i387_mode_needed): Add case
      	I387_ROUNDEVEN.
      	(ix86_mode_needed): Likewise.
      	(ix86_mode_after): Likewise.
      	(ix86_mode_entry): Likewise.
      	(ix86_mode_exit): Likewise.
      	(ix86_emit_mode_set): Likewise.
      	(emit_i387_cw_initialization): Add case I387_CW_ROUNDEVEN.
      	* config/i386/i386.h (ix86_stack_slot): Add SLOT_CW_ROUNDEVEN.
      	(ix86_entry): Add I387_ROUNDEVEN.
      	(avx_u128_state): Add I387_CW_ANY.
      	* config/i386/i386.md: Define UNSPEC_FRNDINT_ROUNDEVEN.
      	(define_int_iterator): Likewise.
      	(define_int_attr): Likewise for rounding_insn, rounding and ROUNDING.
      	(define_constant): Define ROUND_ROUNDEVEN mode.
      	(define_attr): Add roundeven mode for i387_cw.
      	(<rouding_insn><mode>2): Add condition for ROUND_ROUNDEVEN.
      	* internal-fn.def (ROUNDEVEN): New builtin function.
      	* optabs.def (roundeven_optab): New optab.
      
      gcc/testsuite/ChangeLog:
      
      2019-08-26  Tejas Joshi  <tejasjoshi9673@gmail.com>
      
      	* gcc.target/i386/sse4_1-round-roundeven-1.c: New test.
      	* gcc.target/i386/sse4_1-round-roundeven-2.c: New test.
      
      
      Co-Authored-By: Uros Bizjak <ubizjak@gmail.com>
      
      From-SVN: r274928
      Tejas Joshi committed
    • Builtin function roundeven folding implementation · 7d7b99f9
      2019-08-26  Tejas Joshi  <tejasjoshi9673@gmail.com>
      
              * builtins.c (mathfn_built_in_2): Added CASE_MATHFN_FLOATN
              for ROUNDEVEN.
              * builtins.def: Added function definitions for roundeven function
              variants.
              * fold-const-call.c (fold_const_call_ss): Added case for roundeven
              function call.  Adjust condition for floor, ceil, trunc and round.
              * fold-const.c (negate_mathfn_p): Added case for roundeven function.
              (tree_call_nonnegative_warnv_p): Added case for roundeven function.
              (integer_valued_real_call_p): Added case for roundeven function.
              * real.c (is_even): New function. Returns true if real number is even,
              otherwise returns false.
              (is_halfway_below): New function. Returns true if real number is
              halfway between two integers, else return false.
              (real_roundeven): New function. Round real number to nearest integer,
              rounding halfway cases towards even.
              * real.h (real_value): Added descriptive comments.  Added function
              declaration for roundeven function.
              * doc/extend.texi (Other Builtins): List roundeven variants among
              functions which can be handled as builtins.
      
      gcc/testsuite/ChangeLog:
      
      2019-08-26  Tejas Joshi  <tejasjoshi9673@gmail.com>
      
              * gcc.dg/torture/builtin-round-roundeven.c: New test.
              * gcc.dg/torture/builtin-round-roundevenf128.c: New test.
      
      From-SVN: r274927
      Tejas Joshi committed
    • re PR target/91522 (STV is slow) · 48a31a09
      2019-08-26  Richard Biener  <rguenther@suse.de>
      
      	PR target/91522
      	PR target/91527
      	* config/i386/i386-features.h (general_scalar_chain::defs_map):
      	New member.
      	(general_scalar_chain::replace_with_subreg): Remove.
      	(general_scalar_chain::replace_with_subreg_in_insn): Likewise.
      	(general_scalar_chain::convert_reg): Adjust signature.
      	* config/i386/i386-features.c (scalar_chain::add_insn): Do not
      	iterate over all defs of a reg.
      	(general_scalar_chain::replace_with_subreg): Remove.
      	(general_scalar_chain::replace_with_subreg_in_insn): Likewise.
      	(general_scalar_chain::make_vector_copies): Populate defs_map,
      	place copy only after defs that are used as vectors in the chain.
      	(general_scalar_chain::convert_reg): Emit a copy for a specific
      	def in a specific instruction.
      	(general_scalar_chain::convert_op): All reg uses are converted here.
      	(general_scalar_chain::convert_insn): Emit copies for scalar
      	uses of defs here.  Replace uses with the copies we created.
      	Replace and convert the def.  Adjust REG_DEAD notes, remove
      	REG_EQUIV/EQUAL notes.
      	(general_scalar_chain::convert_registers): Only handle copies
      	into the chain here.
      
      From-SVN: r274926
      Richard Biener committed
    • [PATCH 2/2] Add simplify rule for wrapped addition. · df7d46d9
      Add the transform (T)(A) + CST -> (T)(A + CST).  This enables vrp to
      simplify sequences like
      
      _2 = a_7 - 1;
      _3 = (long unsigned int) _2;
      _5 = _3 + 1
      
      that ivopts creates.
      
      --
      
      gcc/ChangeLog:
      
      2019-08-26  Robin Dapp  <rdapp@linux.ibm.com>
      
              * match.pd: Add (T)(A) + CST -> (T)(A + CST).
      
      gcc/testsuite/ChangeLog:
      
      2019-08-26  Robin Dapp  <rdapp@linux.ibm.com>
      
              * gcc.dg/tree-ssa/copy-headers-5.c: Do not run vrp pass.
              * gcc.dg/tree-ssa/copy-headers-7.c: Do not run vrp pass.
              * gcc.dg/tree-ssa/loop-15.c: Remove XFAIL.
              * gcc.dg/tree-ssa/pr23744.c: Change search pattern.
              * gcc.dg/wrapped-binop-simplify.c: New test.
      
      From-SVN: r274925
      Robin Dapp committed
    • [PATCH 1/2] Allow folding all statements. · e944354e
      This patch allows users of the substitute_and_fold_engine to
      enable folding all statements.  It is now enabled for VRP which
      is needed for the match.pd pattern in patch 2/2.
      
      The loop versioning pass was missing one case when
      deconstructing addresses that would only be triggered after
      this patch for me:
      It could handle addition and subsequent convert/nop but not
      a convert/nop directly.  This would cause the hash to be
      calculated differently and, in turn, cause the pass to miss
      a versioning opportunity.  Fixed this by adding the missing
      case.
      
      --
      
      gcc/ChangeLog:
      
      2019-08-26  Robin Dapp  <rdapp@linux.ibm.com>
      
              * gimple-loop-versioning.cc (loop_versioning::record_address_fragment):
              Add nop_convert case.
              * tree-ssa-propagate.c (substitute_and_fold_dom_walker::before_dom_children):
              Fold all statements if requested.
              * tree-ssa-propagate.h (class substitute_and_fold_engine):
              Allow to fold all statements.
              * tree-vrp.c (class vrp_folder):
              Let substitute_and_fold_engine fold all statements.
      
      From-SVN: r274923
      Robin Dapp committed
    • re PR c/91526 (Unnecessary SSE and other instructions generated when compiling… · bf05a3bb
      re PR c/91526 (Unnecessary SSE and other instructions generated when compiling in C mode (vs. C++ mode))
      
      2019-08-26  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/91526
      	* passes.def: Note that after late FRE we do TODO_update_address_taken.
      	* tree-ssa-sccvn.c (pass_fre::execute): In late mode schedule
      	TODO_update_address_taken.
      
      From-SVN: r274922
      Richard Biener committed
    • RISC-V: Add testcase for testing li pseudo instruction · 20e7012b
      gcc/testsuite/ChangeLog:
      
      	gcc.target/riscv/li.c: New test.
      
      From-SVN: r274920
      Kito Cheng committed
    • Daily bump. · 900af77f
      From-SVN: r274919
      GCC Administrator committed
  4. 25 Aug, 2019 1 commit