1. 06 Sep, 2018 8 commits
    • varasm.c (output_constructor_regular_field): Check TYPE_SIZE_UNIT of the init value. · 6d900107
      	* varasm.c (output_constructor_regular_field): Check TYPE_SIZE_UNIT of
      	the init value.
      
      	* c-common.c (complete_flexible_array_elts): New helper function.
      	* c-common.h (complete_flexible_array_elts): Declare.
      
      	* c-decl.c (finish_decl): Call complete_flexible_array_elts.
      
      	* decl.c (check_initializer): Call cp_complete_array_type.
      
      From-SVN: r264147
      Bernd Edlinger committed
    • rs6000.c (rs6000_gimple_fold_builtin): Add support for early gimple folding of vec_splat(). · 6847c656
      [gcc]
      
      2018-09-06  Will Schmidt  <will_schmidt@vnet.ibm.com>
      
      	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
      	early gimple folding of vec_splat().
      	* tree-vect-generic.c: Remove static from tree_vec_extract() definition.
      	* gimple-fold.h: Add an extern define for tree_vec_extract().
      
      From-SVN: r264146
      Will Schmidt committed
    • rs6000.c (fold_mergehl_helper): Add types_compatible_p wrappers around TREE_TYPE comparisons. · 84bde0bf
      [gcc]
      
      2018-08-20  Will Schmidt  <will_schmidt@vnet.ibm.com>
      
      	* config/rs6000/rs6000.c (fold_mergehl_helper): Add types_compatible_p
      	wrappers around TREE_TYPE comparisons.
      
      From-SVN: r264145
      Will Schmidt committed
    • S/390: Prohibit SYMBOL_REF in UNSPECV_CAS · bdb57bcb
      Inhibit constant propagation inlining SYMBOL_REF loads into
      UNSPECV_CAS.  Even though reload can later undo it, the resulting
      code will be less efficient.
      
      gcc/ChangeLog:
      
      2018-09-06  Ilya Leoshkevich  <iii@linux.ibm.com>
      
      	PR target/80080
      	* config/s390/predicates.md: Add nonsym_memory_operand.
      	* config/s390/s390.c (s390_legitimize_cs_operand): If operand
      	contains a SYMBOL_REF, load it into an intermediate pseudo.
      	(s390_emit_compare_and_swap): Legitimize operand.
      	* config/s390/s390.md: Use the new nonsym_memory_operand
      	with UNSPECV_CAS patterns.
      
      gcc/testsuite/ChangeLog:
      
      2018-09-06  Ilya Leoshkevich  <iii@linux.ibm.com>
      
      	PR target/80080
      	* gcc.target/s390/pr80080-3.c: New test.
      	* gcc.target/s390/s390.exp: Make sure the new test passes
      	on all optimization levels.
      
      From-SVN: r264143
      Ilya Leoshkevich committed
    • S/390: Register pass_s390_early_mach statically · d7252499
      The dump file used to come at the end of the sorted dump file list,
      because the pass was registered dynamically. This did not reflect the
      order in which passes are executed. Static registration fixes this:
      
      * foo4.c.277r.split2
      * foo4.c.281r.early_mach
      * foo4.c.282r.pro_and_epilogue
      
      gcc/ChangeLog:
      
      2018-09-06  Ilya Leoshkevich  <iii@linux.ibm.com>
      
      	PR target/80080
      	* config/s390/s390-passes.def: New file.
      	* config/s390/s390-protos.h (class rtl_opt_pass): Add forward
      	declaration.
      	(make_pass_s390_early_mach): Add declaration.
      	* config/s390/s390.c (make_pass_s390_early_mach):
      	(s390_option_override): Remove dynamic registration.
      	* config/s390/t-s390: Add s390-passes.def.
      
      From-SVN: r264142
      Ilya Leoshkevich committed
    • S/390: Remove UNSPEC_LTREL_BASE · f0d20631
      It was needed only for g5/g6 machines, which are now gone.
      
      gcc/ChangeLog:
      
      2018-09-06  Ilya Leoshkevich  <iii@linux.ibm.com>
      
      	* config/s390/s390.c (s390_decompose_constant_pool_ref):
      	Remove UNSPEC_LTREL_BASE check.
      	(annotate_constant_pool_refs): Likewise.
      	(find_constant_pool_ref): Likewise.
      	(find_ltrel_base): Removed.
      	(replace_ltrel_base): Removed.
      	(s390_mainpool_finish): Remove replace_ltrel_base call.
      	(s390_chunkify_start): Remove pending LTREL_BASE logic.
      	(s390_chunkify_finish): Remove replace_ltrel_base call.
      	* config/s390/s390.md: Remove UNSPEC_LTREL_BASE.
      
      From-SVN: r264141
      Ilya Leoshkevich committed
    • PR c++/86982, -Wreturn-local-addr and std::move and std::forward. · 308d9cda
      	* typeck.c (maybe_warn_about_returning_address_of_local): Handle calls
      	to std::move or std::forward.
      	(is_std_forward_p): New function.
      
      	* g++.dg/warn/Wreturn-local-addr-5.C: New test.
      
      From-SVN: r264139
      Marek Polacek committed
    • Daily bump. · 4497d88f
      From-SVN: r264138
      GCC Administrator committed
  2. 05 Sep, 2018 21 commits
    • re PR target/86779 (Cris port needs updating for CVE-2017-5753) · c53e89f4
      	PR target/86779
      	* config/cris/cris.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine
      	to speculation_safe_value_not_needed.
      
      From-SVN: r264134
      Hans-Peter Nilsson committed
    • [nvptx] Basic -misa support for nvptx · 53ceb8b5
      	gcc/
      	* config/nvptx/nvptx-opts.h: New file.
      	* config/nvptx/nvptx.c (nvptx_file_start): Print the correct .target.
      	* config/nvptx/nvptx.h: Include "nvptx-opts.h".
      	(ASM_SPEC): Define.
      	(TARGET_SM35): New macro.
      	* config/nvptx/nvptx.md (atomic_fetch_<logic><mode>): Enable with the
      	correct predicate.
      	* config/nvptx/nvptx.opt (ptx_isa, sm_30, sm_35): New enum and its
      	values.
      	(misa=): New option.
      	* doc/invoke.texi (Nvidia PTX Options): Document -misa.
      
      	gcc/testsuite/
      	* gcc.target/nvptx/atomic_fetch-1.c: New test.
      	* gcc.target/nvptx/atomic_fetch-1.c: New test.
      
      
      Co-Authored-By: Bernd Schmidt <bernds_cb1@t-online.de>
      
      From-SVN: r264133
      Cesar Philippidis committed
    • PR c++/87109, wrong overload with ref-qualifiers. · 62c21cee
      	* call.c (build_user_type_conversion_1): Use NULL instead of 0.  Bail
      	out if performing the maybe-rvalue overload resolution and a conversion
      	function is getting called.
      
      	* g++.dg/cpp0x/ref-qual19.C: New test.
      
      From-SVN: r264132
      Marek Polacek committed
    • i386.md (truncdfsf2): Remove expander. · f6b95f78
      	* config/i386/i386.md (truncdfsf2): Remove expander.
      	(truncdfsf2_with_temp): Ditto.
      	(truncxf<mode>2): Ditto.
      	(*truncdfsf_fast_mixed): Remove insn pattern.
      	(*truncdfsf_fast_i387): Ditto.
      	(*truncdfsf_mixed): Ditto.
      	(*truncdfsf_i387): Ditto.
      	(*truncdfsf2_i387_1): Ditto.
      	(*truncxfsf2_mixed): Ditto.
      	(*truncxfdf2_mixed): Ditto.
      	(*truncxf<mode>2_i387_noop): Ditto. Update callers
      	to call gen_truncxf<mode>2 instead.
      	(*truncxf<mode>2_i387): Remove.
      	(reg->reg splitters): Remove splitter pattern.
      	(reg->mem splitters): Ditto.
      
      	(truncdfsf2): New insn pattern.
      	(truncxf<mode>2): Ditto.
      
      From-SVN: r264130
      Uros Bizjak committed
    • PR52665 do not let .ident confuse assembler scan tests · eb6ffc66
      A branch with a name matching scan-assembler pattern triggers
      inappropriate FAIL.
      
      E.g. branch fixups-testsuite and
      - gcc.target/i386/pr65871-?.c (scan-assembler-not "test")
      - gcc.target/i386/pr41442.c (scan-assembler-times "test|cmp" 2)
      etc.
      
      This is a recurring problem as can be seen by some -fno-ident additions
      by commits from e.g. Michael Meissner over the years: builtins-58.c,
      powerpc/pr46728-?.c
      
      The patch below adds -fno-ident if a testcase contains one of
      scan-assembler, scan-assembler-not or scan-assembler-times.
      
      Regression tested on x86_64-unknown-linux on a fixups-testsuite branch
      where it fixes several false FAILs without regressions.
      
      gcc/testsuite/ChangeLog
      
      2016-06-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
      
              PR testsuite/52665
              * lib/gcc-dg.exp (gcc-dg-test-1): Iterate over _required_options.
              * lib/target-supports.exp (scan-assembler_required_options,
              scan-assembler-not_required_options,
              scan-assembler-times_required_options): Add -fno-ident.
              * lib/scanasm.exp (scan-assembler-times): Fix error message.
              * c-c++-common/ident-0a.c: New test.
              * c-c++-common/ident-0b.c: New test.
              * c-c++-common/ident-1a.c: New test.
              * c-c++-common/ident-1b.c: New test.
              * c-c++-common/ident-2a.c: New test.
              * c-c++-common/ident-2b.c: New test.
      
      From-SVN: r264128
      Bernhard Reutner-Fischer committed
    • Optimise sqrt reciprocal multiplications · 24c49431
      This patch aims to optimise sequences involving uses of 1.0 / sqrt (a) under -freciprocal-math and -funsafe-math-optimizations.
      In particular consider:
      
      x = 1.0 / sqrt (a);
      r1 = x * x;  // same as 1.0 / a
      r2 = a * x; // same as sqrt (a)
      
      If x, r1 and r2 are all used further on in the code, this can be transformed into:
      tmp1 = 1.0 / a
      tmp2 = sqrt (a)
      tmp3 = tmp1 * tmp2
      x = tmp3
      r1 = tmp1
      r2 = tmp2
      
      A bit convoluted, but this saves us one multiplication and, more importantly, the sqrt and division are now independent.
      This also allows optimisation of a subset of these expressions.
      For example:
      x = 1.0 / sqrt (a)
      r1 = x * x
      
      can be transformed to r1 = 1.0 / a, eliminating the sqrt if x is not used anywhere else.
      And similarly:
      x = 1.0 / sqrt (a)
      r1 = a * x
      
      can be transformed to sqrt (a) eliminating the division.
      
      For the testcase:
      double res, res2, tmp;
      void
      foo (double a, double b)
      {
        tmp = 1.0 / __builtin_sqrt (a);
        res = tmp * tmp;
        res2 = a * tmp;
      }
      
      We now generate for aarch64 with -Ofast:
      foo:
              fmov    d2, 1.0e+0
              adrp    x2, res2
              fsqrt   d1, d0
              adrp    x1, res
              fdiv    d0, d2, d0
              adrp    x0, tmp
              str     d1, [x2, #:lo12:res2]
              fmul    d1, d1, d0
              str     d0, [x1, #:lo12:res]
              str     d1, [x0, #:lo12:tmp]
              ret
      
      where before it generated:
      foo:
              fsqrt   d2, d0
              fmov    d1, 1.0e+0
              adrp    x1, res2
              adrp    x2, tmp
              adrp    x0, res
              fdiv    d1, d1, d2
              fmul    d0, d1, d0
              fmul    d2, d1, d1
              str     d1, [x2, #:lo12:tmp]
              str     d0, [x1, #:lo12:res2]
              str     d2, [x0, #:lo12:res]
              ret
      
      As you can see, the new sequence has one fewer multiply and the fsqrt and fdiv are independent. 
      
      	* tree-ssa-math-opts.c (is_mult_by): New function.
      	(is_square_of): Use the above.
      	(optimize_recip_sqrt): New function.
      	(pass_cse_reciprocals::execute): Use the above.
      
      	* gcc.dg/recip_sqrt_mult_1.c: New test.
      	* gcc.dg/recip_sqrt_mult_2.c: Likewise.
      	* gcc.dg/recip_sqrt_mult_3.c: Likewise.
      	* gcc.dg/recip_sqrt_mult_4.c: Likewise.
      	* gcc.dg/recip_sqrt_mult_5.c: Likewise.
      	* g++.dg/recip_sqrt_mult_1.C: Likewise.
      	* g++.dg/recip_sqrt_mult_2.C: Likewise.
      
      From-SVN: r264126
      Kyrylo Tkachov committed
    • re PR bootstrap/87134 (SEGV in cc1 caused by r263875) · 76a5eae5
      2018-09-05  Richard Biener  <rguenther@suse.de>
      
      	PR bootstrap/87134
      	* tree-ssa-sccvn.c (rpo_elim::eliminate_push_avail): Make sure
      	to zero-init the emplaced vec.
      
      From-SVN: r264125
      Richard Biener committed
    • Group switch cases in switch lowering (PR tree-optimization/87205). · e6c5d9f0
      2018-09-05  Martin Liska  <mliska@suse.cz>
      
      	PR tree-optimization/87205
      	* tree-switch-conversion.c (pass_lower_switch::execute):
      	Group cases for switch statements.
      2018-09-05  Martin Liska  <mliska@suse.cz>
      
      	PR tree-optimization/87205
      	* gcc.dg/tree-ssa/pr87205-2.c: New test.
      	* gcc.dg/tree-ssa/pr87205.c: New test.
      
      From-SVN: r264124
      Martin Liska committed
    • re PR tree-optimization/87217 (ICE in in check_loop_closed_ssa_def, at… · 85004cb2
      re PR tree-optimization/87217 (ICE in in check_loop_closed_ssa_def, at tree-ssa-loop-manip.c:709 when compiling SPEC2000 starting with r264069)
      
      2018-09-05  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/87217
      	* tree-ssa-sccvn.c (vuse_valueize): New.
      	(vn_reference_lookup_pieces): Use it.
      	(vn_reference_lookup): Likewise.
      
      	* gfortran.dg/pr87217.f: New testcase.
      
      From-SVN: r264121
      Richard Biener committed
    • PR c++/87137] GCC-8 Fix · c0bb5047
      https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01966.html
      	PR c++/87137
      	* stor-layout.c (place_field): Scan forwards to check last
      	bitfield when ms_bitfield_placement is in effect.
      	gcc/testsuite/
      	* g++.dg/abi/pr87137.C: New.
      
      From-SVN: r264119
      Nathan Sidwell committed
    • [PR c++/87185] ICE in prune-lambdas · 86e95f35
      https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00249.html
      	cp/
      	PR c++/87185
      	* lambda.c (prune_lambda_captures): Protect against const_vars.get
      	returning NULL.
      	testsuite/
      	PR c++/87185
      	* g++.dg/pr87185.C: New.
      
      From-SVN: r264118
      Pádraig Brady committed
    • re PR bootstrap/87225 (tree-vect-stmts.c:3748 error: converting to 'bool' from… · 888157af
      re PR bootstrap/87225 (tree-vect-stmts.c:3748 error: converting to 'bool' from 'std::nullptr_t' requires direct-initialization [-fpermissive])
      
      2018-09-05  Richard Biener  <rguenther@suse.de>
      
      	PR bootstrap/87225
      	* tree-vect-stmts.c (vectorizable_simd_clone_call): Fix bogus
      	return.
      
      From-SVN: r264116
      Richard Biener committed
    • [aarch64] Avoid tag collisions for loads falkor · a98824ac
      This is a rewrite of the tag collision avoidance patch that Kugan had
      written as a machine reorg pass back in February.
      
      The falkor hardware prefetching system uses a combination of the
      source, destination and offset to decide which prefetcher unit to
      train with the load.  This is great when loads in a loop are
      sequential but sub-optimal if there are unrelated loads in a loop that
      tag to the same prefetcher unit.
      
      This pass attempts to rename the desination register of such colliding
      loads using routines available in regrename.c so that their tags do
      not collide.  This shows some performance gains with mcf and xalancbmk
      (~5% each) and will be tweaked further.  The pass is placed near the
      fag end of the pass list so that subsequent passes don't inadvertantly
      end up undoing the renames.
      
      2018-07-02  Siddhesh Poyarekar  <siddhesh@sourceware.org>
                  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>
      
      	* config/aarch64/falkor-tag-collision-avoidance.c: New file.
      	* config.gcc (extra_objs): Build it.
      	* config/aarch64/t-aarch64 (falkor-tag-collision-avoidance.o):
      	Likewise.
      	* config/aarch64/aarch64-passes.def
      	(pass_tag_collision_avoidance): New pass.
      	* config/aarch64/aarch64.c (qdf24xx_tunings): Add
      	AARCH64_EXTRA_TUNE_RENAME_LOAD_REGS to tuning_flags.
      	(aarch64_classify_address): Remove static qualifier.
      	(aarch64_address_info, aarch64_address_type): Move to...
      	* config/aarch64/aarch64-protos.h: ... here.
      	(make_pass_tag_collision_avoidance): New function.
      	* config/aarch64/aarch64-tuning-flags.def (rename_load_regs):
      	New tuning flag.													
      
      
      Co-Authored-By: Kugan Vivekanandarajah <kuganv@linaro.org>
      
      From-SVN: r264115
      Siddhesh Poyarekar committed
    • Fix typo in ChangeLog. · 41fbb3ec
      From-SVN: r264114
      Martin Liska committed
    • Fix a scan in test for Darwin target (PR testsuite/87216). · ac2f3b7f
      2018-09-05  Martin Liska  <mliska@suse.cz>
      
      	PR testsuite/87216
      	* gcc.dg/tree-prof/pr59521-3.c: Update scanned pattern
      	to support Dawring names.
      
      From-SVN: r264113
      Martin Liska committed
    • GCOV: Print one decimal place in human readable mode. · d1c772b9
      2018-09-05  Martin Liska  <mliska@suse.cz>
      
      	* doc/gcov.texi: Update documentation of humar
      	readable mode.
      	* gcov.c (format_count): Print one decimal place, it provides
      	more fine number of situations like '1G' vs. '1.4G'.
      2018-09-05  Martin Liska  <mliska@suse.cz>
      
      	* g++.dg/gcov/loop.C: Update test to support new format.
      
      From-SVN: r264112
      Martin Liska committed
    • Ignore properly -mdirect-move (PR target/87164). · 3d043c51
      2018-09-05  Martin Liska  <mliska@suse.cz>
      
      	PR target/87164
      	* config/rs6000/rs6000.opt: Mark the option as Deprecated.
      	* optc-gen.awk: Allow 'Var' for Deprecated options in order
      	to generate a MASK value.
      
      From-SVN: r264111
      Martin Liska committed
    • cp-tree.h (treat_lvalue_as_rvalue_p): Declare. · 74be6f51
      	* cp-tree.h (treat_lvalue_as_rvalue_p): Declare.
      	* except.c (build_throw): Use it.  Use CP_TYPE_VOLATILE_P.
      	* typeck.c (treat_lvalue_as_rvalue_p): No longer static.  Add PARM_OK
      	parameter.
      	(maybe_warn_pessimizing_move): Adjust treat_lvalue_as_rvalue_p call.
      	(check_return_expr): Likewise.
      
      From-SVN: r264101
      Marek Polacek committed
    • Daily bump. · fd64b293
      From-SVN: r264100
      GCC Administrator committed
  3. 04 Sep, 2018 11 commits
    • DWARF: Allow hard frame pointer even if frame pointer isn't used · 6bc088ca
      r251028
      
      commit cd557ff63f388ad27c376d0a225e74d3594a6f9d
      Author: hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
      Date:   Thu Aug 10 15:29:05 2017 +0000
      
          i386: Don't use frame pointer without stack access
      
          When there is no stack access, there is no need to use frame pointer
          even if -fno-omit-frame-pointer is used and caller's frame pointer is
          unchanged.
      
      frame pointer may not be available even if -fno-omit-frame-pointer is
      used.  When this happened, arg pointer may be eliminated by hard frame
      pointer.  Since hard frame pointer is encoded with DW_OP_fbreg which
      uses the DW_AT_frame_base attribute, not hard frame pointer directly,
      we should allow hard frame pointer when generating DWARF info even if
      frame pointer isn't used.
      
      gcc/
      
      	PR debug/86593
      	* dwarf2out.c (based_loc_descr): Allow hard frame pointer even
      	if frame pointer isn't used.
      	(compute_frame_pointer_to_fb_displacement): Likewise.
      
      gcc/testsuite/
      
      	PR debug/86593
      	* g++.dg/pr86593.C: New test.
      
      From-SVN: r264096
      H.J. Lu committed
    • re PR target/87198 (ICE in extract_insn, at recog.c:2304) · 8f93810d
      	PR target/87198
      	* common/config/i386/i386-common.c (OPTION_MASK_ISA_XSAVEOPT_SET,
      	OPTION_MASK_ISA_XSAVES_SET, OPTION_MASK_ISA_XSAVEC_SET): Use
      	OPTION_MASK_ISA_XSAVE_SET instead of OPTION_MASK_ISA_XSAVE.
      	(OPTION_MASK_ISA_XSAVE_UNSET): Add OPTION_MASK_ISA_XSAVES_UNSET
      	and OPTION_MASK_ISA_XSAVEC_UNSET.
      
      	* gcc.target/i386/pr87198.c: New test.
      
      From-SVN: r264088
      Jakub Jelinek committed
    • gcc: xtensa: fix NAND code in xtensa_expand_atomic · 2a17b239
      NAND is ~(a1 & a2), but xtensa_expand_atomic does ~a1 & a2.
      That fixes libatomic tests atomic-op-{1,2}.
      
      gcc/
      2018-09-04  Max Filippov  <jcmvbkbc@gmail.com>
      
      	* config/xtensa/xtensa.c (xtensa_expand_atomic): Reorder AND and
      	XOR operations in NAND case.
      
      From-SVN: r264087
      Max Filippov committed
    • Don't xfail gcc.target/i386/addr-sel-1.c (PR target/86744) · 0bdb34b4
      	PR target/86744
      	* gcc.target/i386/addr-sel-1.c: Don't xfail "b\\+1" scan.
      
      From-SVN: r264086
      Rainer Orth committed
    • wide-int-range.cc (wide_int_range_convert): New. · 150655ee
      	* wide-int-range.cc (wide_int_range_convert): New.
      	* wide-int-range.h (wide_int_range_convert): New.
      	* tree-vrp.c (extract_range_from_unary_expr): Abstract wide int
      	code into wide_int_range_convert.
      	(extract_range_into_wide_ints): Do not munge anti range constants
      	into the entire domain.  Just return the range back.
      
      From-SVN: r264085
      Aldy Hernandez committed
    • genmatch: put reporting on a cold path · 8fcfe047
      2018-09-04  Martin Liska  <mliska@suse.cz>
      
      	* genmatch.c (output_line_directive): Add new argument
      	fnargs.
      	(dt_simplify::gen_1): Encapsulate dump within __builtin_expect.
      
      From-SVN: r264084
      Martin Liska committed
    • Add whitespace before warning option added in previous commmit · b88ad32d
      	* doc/invoke.texi (Option Summary): Add whitespace.
      
      From-SVN: r264083
      Jonathan Wakely committed
    • Add -Waligned-new to Option Summary · c91c2006
      	* doc/invoke.texi (Option Summary): Add -Waligned-new.
      
      From-SVN: r264080
      Jonathan Wakely committed
    • re PR tree-optimization/87211 (gcc ICE at O2: in set_ssa_val_to, at tree-ssa-sccvn.c:3628) · 5bf734fa
      2018-09-04  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/87211
      	* tree-ssa-sccvn.c (visit_phi): When value-numbering to a
      	backedge value we're supposed to treat as VARYING also number
      	the PHI to VARYING in case it got a different value-number already.
      
      	* gcc.dg/torture/pr87211.c: New testcase.
      
      From-SVN: r264079
      Richard Biener committed
    • tree-vrp.c (vrp_can_optimize_bit_op): Remove. · e20d979b
      	* tree-vrp.c (vrp_can_optimize_bit_op): Remove.
      	(extract_range_from_binary_expr_1): Do not call
      	vrp_can_optimize_bit_op.
      	* wide-int-range.cc (wide_int_range_can_optimize_bit_op): Make
      	static.
      	(wide_int_range_get_mask_and_bounds): New.
      	(wide_int_range_optimize_bit_op): New.
      	(wide_int_range_bit_ior): Call wide_int_range_optimize_bit_op.
      	(wide_int_range_bit_and): Same.
      	* wide-int-range.h (wide_int_range_can_optimize_bit_op): Remove.
      	(wide_int_range_optimize_bit_op): New.
      	(wide_int_range_get_mask_and_bounds): New.
      
      From-SVN: r264078
      Aldy Hernandez committed
    • re PR tree-optimization/87176 (wrong code at -Os and above on x86-64-linux-gnu) · c2c51a3e
      2018-09-04  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/87176
      	* tree-ssa-sccvn.c (visit_phi): Remove redundant allsame
      	variable.  When value-numbering a virtual PHI node make sure
      	to not value-number to the backedge value.
      
      	* gcc.dg/torture/pr87176.c: New testcase.
      	* gcc.dg/torture/ssa-fre-1.c: Likewise.
      
      From-SVN: r264077
      Richard Biener committed