1. 16 Sep, 2019 6 commits
    • re PR tree-optimization/91756 (g++.dg/lto/alias-3 FAILs) · 10f30ac9
      2019-09-16  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/91756
      	PR tree-optimization/87132
      	* tree-ssa-alias.h (enum translate_flags): New.
      	(get_continuation_for_phi): Use it instead of simple bool flag.
      	(walk_non_aliased_vuses): Likewise.
      	* tree-ssa-alias.c (maybe_skip_until): Adjust.
      	(get_continuation_for_phi): When looking across backedges only
      	disallow valueization.
      	(walk_non_aliased_vuses): Adjust.
      	* tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid valueization
      	if requested.
      
      	* gcc.dg/tree-ssa/ssa-fre-81.c: New testcase.
      
      From-SVN: r275747
      Richard Biener committed
    • PR c++/30277 - int-width bit-field promotion. · ddc1a45b
      Here, if cp_perform_integral_promotions saw that the TREE_TYPE of a
      bit-field reference was the same as the type it promotes to, it didn't do
      anything.  But then decay_conversion saw that the bit-field reference was
      unchanged, and converted it to its declared type.  So I needed to add
      something to make it clear that promotion has been done.  But then the 33819
      change caused trouble by looking through the NOP_EXPR I just added.  This
      was the wrong fix for that bug; I've now fixed that better by recognizing in
      cp_perform_integral_promotions that we won't promote a bit-field larger than
      32 bits, so we should use the declared type.
      
      	PR c++/33819 - long bit-field promotion.
      	* typeck.c (cp_perform_integral_promotions): Handle large bit-fields
      	properly.  Handle 32-bit non-int bit-fields properly.
      	(is_bitfield_expr_with_lowered_type): Don't look through NOP_EXPR.
      
      From-SVN: r275746
      Jason Merrill committed
    • PR c++/82165 - enum bitfields and operator overloading. · 47518e13
      In this testcase, !f.b0 was failing to call the overloaded operator because
      TREE_TYPE is the magic bitfield integer type, and we weren't using
      unlowered_expr_type the way we do in other places.  It would be nice if we
      could give bit-field COMPONENT_REFs their declared type until genericization
      time...
      
      	* call.c (build_new_op_1): Use unlowered_expr_type.
      
      From-SVN: r275745
      Jason Merrill committed
    • Fix conversions for built-in operator overloading candidates. · a4d034d7
      While working on C++20 operator<=>, I noticed that build_new_op_1 was doing
      too much conversion when a built-in candidate was selected; the standard
      says it should only perform user-defined conversions, and then leave the
      normal operator semantics to handle any standard conversions.  This is
      important for operator<=> because a comparison of two different unscoped
      enums is ill-formed; if we promote the enums to int here, cp_build_binary_op
      never gets to see the original operand types, so we can't give the error.
      
      	* call.c (build_new_op_1): Don't apply any standard conversions to
      	the operands of a built-in operator.  Don't suppress conversions in
      	cp_build_unary_op.
      	* typeck.c (cp_build_unary_op): Do integral promotions for enums.
      
      From-SVN: r275744
      Jason Merrill committed
    • Handle location wrappers better in warn_logical_operator. · c4438114
      When we introduced location wrappers, we added fold_for_warn to warnings
      that are interested in a constant value, or wrapper-stripping to warnings
      that are interested in literal constants.  This particular warning is
      looking for a literal constant, but was wrongly changed to use
      fold_for_warn; this patch makes it strip instead.
      
      	* c-warn.c (warn_logical_operator): Strip location wrappers.  Don't
      	fold_for_warn in "|| mask" warning.
      
      From-SVN: r275743
      Jason Merrill committed
    • Daily bump. · 27e0979b
      From-SVN: r275741
      GCC Administrator committed
  2. 15 Sep, 2019 8 commits
  3. 14 Sep, 2019 5 commits
    • re PR fortran/91557 (Bogus warning about unused dummy argument _formal_*) · e0b9e5f9
      2019-09-14  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/91557
      	PR fortran/91556
      	* frontend-passes.c (check_externals_procedure): Reformat argument
      	list. Use gfc_compare_actual_formal instead of gfc_procedure_use.
      	* gfortran.h (gfc_symbol): Add flag error.
      	* interface.c (gfc_compare_interfaces): Reformat.
      	(argument_rank_mismatch): Add where_formal argument. If it is
      	present, note that the error is between different calls.
      	(compare_parameter): Change warnings that previously dependended
      	on -Wargument-mismatch to unconditional.  Issue an error / warning
      	on type mismatch only once.  Pass where_formal to
      	argument_rank_mismatch for artificial variables.
      	(compare_actual_formal): Change warnings that previously
      	dependeded on -Wargument-mismatch to unconditional.
      	(gfc_check_typebound_override): Likewise.
      	(gfc_get_formal_from_actual_arglist): Set declared_at for
      	artificial symbol.
      	* invoke.texi: Extend description of -fallow-argument-mismatch.
      	Delete -Wargument-mismatch.
      	* lang.opt: Change -Wargument-mismatch to do-nothing option.
      	* resolve.c (resolve_structure_cons): Change warnings that
      	previously depended on -Wargument-mismatch to unconditional.
      	* trans-decl.c (generate_local_decl): Do not warn if the symbol is
      	artificial.
      
      2019-09-14  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/91557
      	PR fortran/91556
      	* gfortran.dg/argument_checking_20.f90: New test.
      	* gfortran.dg/argument_checking_21.f90: New test.
      	* gfortran.dg/argument_checking_22.f90: New test.
      	* gfortran.dg/argument_checking_23.f90: New test.
      	* gfortran.dg/warn_unused_dummy_argument_5.f90: New test.
      	* gfortran.dg/bessel_3.f90: Add pattern for type mismatch.
      	* gfortran.dg/g77/20010519-1.f: Adjust dg-warning messages to new
      	handling.
      	* gfortran.dg/pr24823.f: Likewise.
      	* gfortran.dg/pr39937.f: Likewise.
      
      From-SVN: r275719
      Thomas Koenig committed
    • re PR middle-end/83889 (new failures on some arm targets after r256644) · df19f471
      2019-09-14  Sandra Loosemore  <sandra@codesourcery.com>
      
      	PR testsuite/83889
      
      	gcc/testsuite/
      	* g++.dg/vect/pr87914.cc: Remove explicit dg-do run.
      
      From-SVN: r275718
      Sandra Loosemore committed
    • Formatting and comment syntax adjustments. · 62dca3d5
      From-SVN: r275717
      Jason Merrill committed
    • Consider doloop IV in IVOPTs · 603a4ad4
         For the targets supporting low-overhead loops, IVOPTs has to take care of
         the loops which will probably be transformed in RTL doloop optimization,
         to try to make selected IV candidate set optimal.  The process of doloop
         support includes:
      
         1) Analyze the current loop will be transformed to doloop or not, find and
            mark its compare type IV use as doloop use (iv_group field doloop_p), and
            set flag doloop_use_p of ivopts_data to notify subsequent processings on
            doloop.  See analyze_and_mark_doloop_use and its callees for the details.
            The target hook predict_doloop_p can be used for target specific checks.
      
         2) Add one doloop dedicated IV cand {(may_be_zero ? 1 : (niter + 1)), +, -1},
            set flag doloop_p of iv_cand, step cost is set as zero and no extra cost
            like biv.  For cost determination between doloop IV cand and IV use, the
            target hooks doloop_cost_for_generic and doloop_cost_for_address are
            provided to add on extra costs for generic type and address type IV use.
            Zero cost is assigned to the pair between doloop IV cand and doloop IV
            use, and bound zero is set for IV elimination.
      
         3) With the cost setting in step 2), the current cost model based IV
            selection algorithm will process as usual, pick up doloop dedicated IV if
            profitable.
      
      gcc/ChangeLog
      
      2019-09-14  Kewen Lin  <linkw@gcc.gnu.org>
      
          PR middle-end/80791
          * config/rs6000/rs6000.c (TARGET_HAVE_COUNT_REG_DECR_P): New macro.
          (TARGET_DOLOOP_COST_FOR_GENERIC): Likewise.
          (TARGET_DOLOOP_COST_FOR_ADDRESS): Likewise.
          * target.def (have_count_reg_decr_p): New hook.
          (doloop_cost_for_generic): Likewise.
          (doloop_cost_for_address): Likewise.
          * doc/tm.texi.in (TARGET_HAVE_COUNT_REG_DECR_P): Likewise.
          (TARGET_DOLOOP_COST_FOR_GENERIC): Likewise.
          (TARGET_DOLOOP_COST_FOR_ADDRESS): Likewise.
          * doc/tm.texi: Regenerate.
          * tree-ssa-loop-ivopts.c (comp_cost::operator+=): Consider infinite cost
          addend.
          (record_group): Init doloop_p.
          (add_candidate_1): Add optional argument doloop, change the handlings
          accordingly.
          (add_candidate): Likewise.
          (generic_predict_doloop_p): Update attribute.
          (force_expr_to_var_cost): Add costing for expressions COND_EXPR/LT_EXPR/
          LE_EXPR/GT_EXPR/GE_EXPR/EQ_EXPR/NE_EXPR/UNORDERED_EXPR/ORDERED_EXPR/
          UNLT_EXPR/UNLE_EXPR/UNGT_EXPR/UNGE_EXPR/UNEQ_EXPR/LTGT_EXPR/MAX_EXPR/
          MIN_EXPR.
          (get_computation_cost): Update for doloop IV cand extra cost.    
          (determine_group_iv_cost_cond): Update for doloop IV cand.
          (determine_iv_cost): Likewise.
          (ivopts_estimate_reg_pressure): Likewise.
          (may_eliminate_iv): Update handlings for doloop IV cand.
          (add_iv_candidate_for_doloop): New function.
          (find_iv_candidates): Call function add_iv_candidate_for_doloop.
          (iv_ca_set_no_cp): Update for doloop IV cand.
          (iv_ca_set_cp): Likewise.
          (iv_ca_dump): Dump register cost.
          (find_doloop_use): New function.
          (analyze_and_mark_doloop_use): Likewise.
          (tree_ssa_iv_optimize_loop): Call function analyze_and_mark_doloop_use.
      
      gcc/testsuite/ChangeLog
      
      2019-09-14  Kewen Lin  <linkw@gcc.gnu.org>
      
          PR middle-end/80791
          * gcc.dg/tree-ssa/ivopts-3.c: Adjust for doloop change.
          * gcc.dg/tree-ssa/ivopts-lt.c: Likewise.
          * gcc.dg/tree-ssa/pr32044.c: Likewise.
      
      From-SVN: r275713
      Kewen Lin committed
    • Daily bump. · f3898644
      From-SVN: r275709
      GCC Administrator committed
  4. 13 Sep, 2019 10 commits
    • re PR fortran/91566 (ICE in gfc_constructor_copy, at fortran/constructor.c:103) · 81e87db4
      2019-09-13  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/91566
      	* simplify.c (gfc_simplify_merge): Need to simplify expression
      	after insertation of parenthesis.
      
      2019-09-13  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/91566
      	* gfortran.dg/pr91566.f90:
      
      From-SVN: r275704
      Steven G. Kargl committed
    • libgomp plugin - init string · c28712be
      libgomp/
      2019-09-13  Tobias Burnus  <tobias@codesourcery.com>
      
              * plugin/plugin-hsa.c (hsa_warn, hsa_fatal, hsa_error): Ensure
              string is initialized.
      
      From-SVN: r275703
      Tobias Burnus committed
    • gnatmake: Accept the `--sysroot=' GCC driver option · a6fa2e83
      According to `gnatmake' documentation:
      
      "Any uppercase or multi-character switch that is not a 'gnatmake' switch
      is passed to 'gcc' (e.g., '-O', '-gnato,' etc.)"
      
      however the `--sysroot=' switch is actually rejected:
      
      gnatmake: invalid switch: --sysroot=...
      
      likely because it is one of the very few GCC driver options that have a 
      leading double dash and therefore we don't have a blanket fall-through 
      for such switches that would satisfy what our documentation claims.
      
      The option is actually shared between the compiler and the linker, so 
      pass the switch to both build stages if requested, removing GNAT 
      testsuite issues like:
      
      gnatmake: invalid switch: --sysroot=.../sysroot
      compiler exited with status 1
      Executing on host: .../gcc/gnatclean -c -q -n ./abstract_with_anonymous_result   (timeout = 300)
      spawn -ignore SIGHUP .../gcc/gnatclean -c -q -n ./abstract_with_anonymous_result
      PASS: gnat.dg/abstract_with_anonymous_result.adb (test for excess errors)
      UNRESOLVED: gnat.dg/abstract_with_anonymous_result.adb compilation failed to produce executable
      
      in a test environment where `--with-build-sysroot=.../sysroot' has been 
      used to build a cross-compiler.  Passing to the compilation stage only 
      would lead to errors like:
      
      .../bin/riscv64-linux-gnu-ld: cannot find crt1.o: No such file or directory
      .../bin/riscv64-linux-gnu-ld: cannot find -lc
      collect2: error: ld returned 1 exit status
      gnatlink: error when calling .../gcc/xgcc
      gnatmake: *** link failed.
      compiler exited with status 1
      Executing on host: .../gcc/gnatclean -c -q -n ./abstract_with_anonymous_result   (timeout = 300)
      spawn -ignore SIGHUP .../gcc/gnatclean -c -q -n ./abstract_with_anonymous_result
      ./abstract_with_anonymous_result.ali
      ./abstract_with_anonymous_result.o
      FAIL: gnat.dg/abstract_with_anonymous_result.adb (test for excess errors)
      Excess errors:
      .../bin/riscv64-linux-gnu-ld: cannot find crt1.o: No such file or directory
      .../bin/riscv64-linux-gnu-ld: cannot find -lc
      gnatlink: error when calling .../gcc/xgcc
      
      UNRESOLVED: gnat.dg/abstract_with_anonymous_result.adb compilation failed to produce executable
      
      instead.
      
      	gcc/ada/
      	* make.adb (Scan_Make_Arg): Also accept `--sysroot=' for the 
      	compiler and the linker.
      
      From-SVN: r275702
      Maciej W. Rozycki committed
    • re PR middle-end/91708 ([ARM] Bootstrap fails in gen_movsi, at config/arm/arm.md:5258) · 23741374
      2019-09-13  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              PR middle-end/91708
              * cse.c (cse_insn): Do not replace anything with a
              MEM.
      
      From-SVN: r275701
      Bernd Edlinger committed
    • libgo: don't use \? in grep pattern · 57cccc86
          
          It's not supported by Solaris grep.  Just use * instead; it matches
          more but it shouldn't matter.
          
          Fixes https://gcc.gnu.org/PR91764
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/195238
      
      From-SVN: r275700
      Ian Lance Taylor committed
    • * doc/invoke.texi (Optimize Options): Fix typo. · 9a235e7e
      From-SVN: r275699
      Ian Lance Taylor committed
    • re PR fortran/91716 (ICE in output_constant, at varasm.c:5026) · 22cd0312
      2019-09-13  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              PR fortran/91716
              * trans-array.c (gfc_conv_array_initializer): Always assign the
              array type of the field to the string constant.
      
      testsuite:
      2019-09-13  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              PR fortran/91716
              * gfortran.dg/pr91716.f90: New test.
      
      From-SVN: r275698
      Bernd Edlinger committed
    • [PATCH][GCC] Update my email address · 0d1cfeed
      gcc/ChangeLog
      2019-09-13  Sam Tebbs  <sam.tebbs@arm.com>
      
      	* MAINTAINERS (Sam Tebbs): Update email address.
      
      From-SVN: r275697
      Sam Tebbs committed
    • re PR fortran/91717 (ICE on concatenating deferred-length character and character literal) · e4dc7c65
      2019-09-13  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/91717
      	* dependency.c (gfc_dep_resolver): Flag identical components
      	and exit with return value 1 if set and no array refs.
      
      2019-09-13  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/91717
      	* gfortran.dg/dependency_55.f90 : New test.
      
      From-SVN: r275696
      Paul Thomas committed
    • Daily bump. · e5b3c74b
      From-SVN: r275695
      GCC Administrator committed
  5. 12 Sep, 2019 6 commits
    • re PR tree-optimization/89386 (Generation of vectorized MULHRS (Multiply High… · d6ecb707
      re PR tree-optimization/89386 (Generation of vectorized MULHRS (Multiply High with Round and Scale) instruction)
      
      	PR tree-optimization/89386
      	* config/i386/sse.md (smulhrs<mode>3): New expander.
      	(smulhrsv4hi3): Ditto.
      
      testsuite/ChangeLog:
      
      	PR tree-optimization/89386
      	* gcc.target/i386/pr89386.c: New test.
      	* gcc.target/i386/pr89386-1.c: Ditto.
      
      From-SVN: r275689
      Uros Bizjak committed
    • re PR tree-optimization/91750 (Induction vectorization introduces signed overflows) · bdc91a32
      2019-09-12  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/91750
      	* tree-vect-loop.c (vectorizable_induction): Compute IV increments
      	in the type of the evolution.
      
      	* gcc.dg/vect/pr91750.c: New testcase.
      
      From-SVN: r275685
      Richard Biener committed
    • PR libstdc++/91748 fix std::for_each_n for random access iterators · 52f6afe0
      	PR libstdc++/91748
      	* include/bits/stl_algo.h (for_each_n): Fix random access iterator
      	case.
      	* testsuite/25_algorithms/for_each/for_each_n.cc: Test with random
      	access iterators.
      
      From-SVN: r275683
      Jonathan Wakely committed
    • Vectorise multiply high with scaling operations (PR 89386) · 58cc9876
      2019-09-12  Yuliang Wang  <yuliang.wang@arm.com>
      
      gcc/
      	PR tree-optimization/89386
      	* config/aarch64/aarch64-sve2.md (<su>mull<bt><Vwide>)
      	(<r>shrnb<mode>, <r>shrnt<mode>): New SVE2 patterns.
      	(<su>mulh<r>s<mode>3): New pattern for MULHRS.
      	* config/aarch64/iterators.md (UNSPEC_SMULLB, UNSPEC_SMULLT)
      	(UNSPEC_UMULLB, UNSPEC_UMULLT, UNSPEC_SHRNB, UNSPEC_SHRNT)
      	(UNSPEC_RSHRNB, UNSPEC_RSHRNT, UNSPEC_SMULHS, UNSPEC_SMULHRS)
      	UNSPEC_UMULHS, UNSPEC_UMULHRS): New unspecs.
      	(MULLBT, SHRNB, SHRNT, MULHRS): New int iterators.
      	(su, r): Handle the unspecs above.
      	(bt): New int attribute.
      	* internal-fn.def (IFN_MULHS, IFN_MULHRS): New internal functions.
      	* internal-fn.c (first_commutative_argument): Commutativity info for
      	above.
      	* optabs.def (smulhs_optab, smulhrs_optab, umulhs_optab)
      	(umulhrs_optab): New optabs.
      	* doc/md.texi (smulhs$var{m3}, umulhs$var{m3})
      	(smulhrs$var{m3}, umulhrs$var{m3}): Documentation for the above.
      	* tree-vect-patterns.c (vect_recog_mulhs_pattern): New pattern
      	function.
      	(vect_vect_recog_func_ptrs): Add it.
      	* testsuite/gcc.target/aarch64/sve2/mulhrs_1.c: New test.
      	* testsuite/gcc.dg/vect/vect-mulhrs-1.c: As above.
      	* testsuite/gcc.dg/vect/vect-mulhrs-2.c: As above.
      	* testsuite/gcc.dg/vect/vect-mulhrs-3.c: As above.
      	* testsuite/gcc.dg/vect/vect-mulhrs-4.c: As above.
      	* doc/sourcebuild.texi (vect_mulhrs_hi): Document new target selector.
      	* testsuite/lib/target-supports.exp
      	(check_effective_target_vect_mulhrs_hi): Return true for AArch64
      	with SVE2.
      
      From-SVN: r275682
      Yuliang Wang committed
    • Daily bump. · 8c58d9d8
      From-SVN: r275680
      GCC Administrator committed
  6. 11 Sep, 2019 5 commits
    • re PR middle-end/83889 (new failures on some arm targets after r256644) · 94aebf7e
      2019-09-11  Sandra Loosemore  <sandra@codesourcery.com>
      
      	PR testsuite/83889
      
      	gcc/testsuite/
      	* gcc.dg/vect/pr81740-2.c: Remove explicit dg-do run.
      	* gcc.dg/vect/pr88598-1.c: Likewise.
      	* gcc.dg/vect/pr88598-2.c: Likewise.
      	* gcc.dg/vect/pr88598-3.c: Likewise.
      	* gcc.dg/vect/pr88598-4.c: Likewise.
      	* gcc.dg/vect/pr88598-5.c: Likewise.
      	* gcc.dg/vect/pr88598-6.c: Likewise.
      	* gcc.dg/vect/pr89440.c: Likewise.
      	* gcc.dg/vect/pr90018.c: Likewise.
      	* gcc.dg/vect/pr91293-1.c: Likewise.
      	* gcc.dg/vect/pr91293-2.c: Likewise.
      	* gcc.dg/vect/pr91293-3.c: Likewise.
      
      From-SVN: r275667
      Sandra Loosemore committed
    • re PR fortran/91553 (ICE in gfc_real2complex, at fortran/arith.c:2208) · 22aa73bd
      2019-09-11  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/91553
      	* simplify.c (gfc_convert_constant):  During conversion check if the
      	constant is enclosed in parenthesis, and simplify expression.
      
      2019-09-11  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/91553
      	* gfortran.dg/pr91553.f90: New test.
      
      From-SVN: r275657
      Steven G. Kargl committed
    • re PR fortran/91642 (ICE: Bad IO basetype (transfer_expr, at fortran/trans-io.c:2507)) · 84e33251
      2019-09-11  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/91642
      	* io.c (gfc_match_inquire): null() cannot be in an iolength inquire
      	list.
      
      2019-09-11  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/91642
      	* gfortran.dg/pr91642.f90: New test.
      
      From-SVN: r275655
      Steven G. Kargl committed
    • Simplify the code. · 19e057e7
      2019-09-11  Michael Meissner  <meissner@linux.ibm.com>
      
      	* config/rs6000/predicates.md (non_add_cint_operand): Simplify the
      	code.
      
      From-SVN: r275652
      Michael Meissner committed
    • compiler: suppress type descriptor generation for aliases · a387d636
          
          Change Named_object::get_backend to ignore aliases when creating type
          descriptors for types, to be consistent with
          Type::needs_specific_type_functions and the Specific_type_functions
          traversal class. For example, when compiling a package that creates an
          alias to an an externally defined type, e.g.
          
             import "foo"
             type MyFoo = foo.Foo
          
          it makes sense to skip the alias (not try to generate type specific
          functions for it) and let the normal mechanisms take care of the alias
          target, depending on whether the target is defined locally or defined
          elsewhere.
          
          Testcase for this problen can be found in CL 193261.
          
          Fixes golang/go#33866.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/191961
      
      From-SVN: r275651
      Ian Lance Taylor committed