1. 08 Dec, 2019 8 commits
  2. 07 Dec, 2019 6 commits
    • PR c++/91678 - wrong error with decltype and location wrapper. · bfbe98c7
      Compiling this testcase results in a bogus "invalid cast" error; this occurs
      since the introduction of location wrappers in finish_id_expression.
      
      Here we are parsing the decltype expression via cp_parser_decltype_expr which
      can lead to calling various fold_* and c-family routines.  They use
      non_lvalue_loc, but that won't create a NON_LVALUE_EXPR wrapper around a location
      wrapper.
      
      So before the location wrappers addition cp_parser_decltype_expr would return
      NON_LVALUE_EXPR <c>.  Now it returns VIEW_CONVERT_EXPR<float *>(c), but the
      STRIP_ANY_LOCATION_WRAPPER immediately following it strips the location wrapper,
      and suddenly we don't know whether we have an lvalue anymore.  And that's sad
      because then decltype produces the wrong type, causing nonsense errors.
      
      	* fold-const.c (maybe_lvalue_p): Handle VIEW_CONVERT_EXPR.
      
      	* g++.dg/cpp0x/decltype73.C: New test.
      
      From-SVN: r279077
      Marek Polacek committed
    • re PR middle-end/90840 (ICE in simplify_subreg, at simplify-rtx.c:6441) · ea37206d
      	PR middle-end/90840
      	* expr.c (expand_assignment): In the case of a CONCAT on the LHS, make
      	sure to pass a valid inner mode in calls to simplify_gen_subreg.
      
      From-SVN: r279076
      Eric Botcazou committed
    • Fortran] PR 92793 - fix column used for error diagnostic · 9c81750c
              PR fortran/92793
              * trans.c (gfc_get_location): Declare.
              * trans.c (gfc_get_location): Define; returns column-corrected location.
              (trans_runtime_error_vararg, gfc_trans_runtime_check,
              gfc_generate_module_code): Use new function.
              * trans-array.c (gfc_trans_auto_array_allocation): Likewise.
              * trans-common.c (build_field, get_init_field, create_common): Likewise.
              * trans-decl.c (gfc_build_label_decl, gfc_get_symbol_decl): Likewise.
              * trans-openmp.c (gfc_trans_omp_reduction_list, gfc_trans_omp_clauses):
              Likewise.
              * trans-stmt.c (gfc_trans_if_1): Likewise.
      
      From-SVN: r279075
      Tobias Burnus committed
    • Fix @multitable handling in texi2pod.pl · b01d215d
      While trying out Dennis's Armv8.6-A patch, I noticed that texi2pod.pl
      didn't handle the new @multitable correctly.  There were two problems:
      
      (1) @multitables nested in other @tables inherited the @item type from
          the enclosing @table.  Since the new @multitable is in a @table @samp,
          we applied @samp markup to the @multitable @items.  This in turn
          meant that it captured the @tab separator in the @item markup.
      
          Fixed by pushing an empty item code onto the stack.
      
      (2) We didn't handle @headitem.  Fixed by enclosing it in italics,
          like we do for section headings.  This causes it to be underlined
          in the man output.
      
      2019-12-07  Richard Sandiford  <richard.sandiford@arm.com>
      
      contrib/
      	* texi2pod.pl: Handle @headitems in @multitables, printing them
      	in italics.  Push an empty item code onto the stack.
      
      From-SVN: r279074
      Richard Sandiford committed
    • re PR c/87488 (hyperlink filenames in diagnostics) · ae169f9e
      	PR c/87488
      	* pretty-print.c (pp_begin_url, pp_end_url, test_urls): Use BEL
      	instead of ST sequence to terminate OSC 8 strings.
      
      Co-Authored-By: David Malcolm <dmalcolm@redhat.com>
      Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
      
      From-SVN: r279073
      Tobias Burnus committed
    • Daily bump. · b69877c6
      From-SVN: r279072
      GCC Administrator committed
  3. 06 Dec, 2019 26 commits
    • re PR c++/92831 (CWG1299 extend_ref_init_temps_1 punts on COND_EXPRs) · beefe639
      	PR c++/92831
      	* call.c (build_conditional_expr_1): For ?: with omitted middle
      	operand use cp_stabilize_reference if arg1 is glvalue_p rather than
      	just if it is lvalue_p.
      
      	* g++.dg/ext/temp-extend1.C: New test.
      
      From-SVN: r279069
      Jakub Jelinek committed
    • Fix read buffer overflow in split_directories · 1cd4fe3d
              * make-relative-prefix.c (split_directories):
              Return early on empty 'name'
      
      From-SVN: r279068
      Tim Ruehsen committed
    • Add test for c++/92451. · 07045595
      This was ICEing from r277865 to r278786.
      
      	* g++.dg/overload/error4.C: New test.
      
      From-SVN: r279067
      Marek Polacek committed
    • parser.c (cp_parser_diagnose_invalid_type_name): Mention that concept is also… · 94a0f396
      parser.c (cp_parser_diagnose_invalid_type_name): Mention that concept is also available with -std=c++2a.
      
      	* parser.c (cp_parser_diagnose_invalid_type_name): Mention
      	that concept is also available with -std=c++2a.
      
      From-SVN: r279066
      Jakub Jelinek committed
    • c-cppbuiltin.c (c_cpp_builtins): Don't define __cpp_consteval for now. · abd6d8cc
      	* c-cppbuiltin.c (c_cpp_builtins): Don't define __cpp_consteval for
      	now.
      
      	* g++.dg/cpp2a/feat-cxx2a.C: Don't test __cpp_consteval for now.
      
      From-SVN: r279065
      Jakub Jelinek committed
    • PR c++/92831 - CWG 1299, not extending temporary lifetime for ?: · 2ee63d04
      	* cp-tree.h (extend_ref_init_temps): Add a new argument with NULL
      	default arg.
      	* call.c (set_up_extended_ref_temp): Add COND_GUARD argument, pass it
      	down to extend_ref_init_temps.  Before pushing cleanup, if COND_GUARD
      	is non-NULL, create a bool temporary if needed, initialize to false
      	and guard the cleanup with the temporary being true.
      	(extend_ref_init_temps_1): Add COND_GUARD argument, pass it down
      	to recursive calls and set_up_extended_ref_temp.  Handle COND_EXPR.
      	(extend_ref_init_temps): Add COND_GUARD argument, pass it down to
      	recursive calls and to extend_ref_init_temps_1.
      
      	* g++.dg/cpp0x/temp-extend2.C: New test.
      
      From-SVN: r279064
      Jakub Jelinek committed
    • re PR go/92820 (libgo.so.15 has executable stack) · eff6af8e
      	PR go/92820
          runtime: only build go-context for x86 GNU/Linux
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/210258
      
      From-SVN: r279063
      Ian Lance Taylor committed
    • re PR other/29842 ([meta-bug] outstanding patches / issues from STMicroelectronics) · 5ec7a413
      	PR go/29842
          runtime: update HURD support for mOS now being embedded
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/210285
      
      From-SVN: r279062
      Ian Lance Taylor committed
    • re PR rtl-optimization/92176 (LRA problem with reloads for subreg operands) · 1a880ef2
      2019-12-06  Andreas Krebbel  <krebbel@linux.ibm.com>
      	    Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR rtl-optimization/92176
      	* lra.c (simplify_subreg_regno): Don't permit unconditional
      	changing mode for LRA too.
      
      2019-12-06  Andreas Krebbel  <krebbel@linux.ibm.com>
      	    Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR rtl-optimization/92176
      	* gcc.target/s390/pr92176.c: New test.
      
      
      Co-Authored-By: Vladimir Makarov <vmakarov@redhat.com>
      
      From-SVN: r279061
      Andreas Krebbel committed
    • Fix Fortran linker errors on AMD GCN · 3ad4a03a
      2019-12-06  Kwok Cheung Yeung  <kcy@codesourcery.com>
      
      	libgomp/
      	* config/accel/proc.c (omp_get_num_procs): Apply ialias macro.
      
      From-SVN: r279060
      Kwok Cheung Yeung committed
    • Avoid -Wincompatible-pointer-types on targets like arm-eabi. · 08821333
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/Wstringop-overflow-23.c: Use the correct argument type.
      	* gcc.dg/Wstringop-overflow-24.c: Same.
      
      From-SVN: r279059
      Martin Sebor committed
    • [C++] Pass type uses through the verify_type_context hook · 02a32ab4
      This patch makes the C++ frontend work with the verify_type_context hook.
      We need some new type contexts for features that don't exist in C, but
      otherwise the patch is very similar to the C one.
      
      TCTX_CAPTURE_BY_COPY could really be treated as an instance of
      TCTX_FIELD, but the error message is better if we split it out.
      
      2019-12-06  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* target.h (TCTX_ALLOCATION, TCTX_DEALLOCATION, TCTX_EXCEPTIONS)
      	(TCTX_CAPTURE_BY_COPY): New type_context_kinds.
      	* config/aarch64/aarch64-sve-builtins.cc (verify_type_context):
      	Handle them.
      
      gcc/cp/
      	* decl.c (start_decl_1): Use verify_type_context to check whether
      	the target allows variables of a particular type to have static
      	or thread-local storage duration.
      	(check_array_initializer): Use verify_type_context to check whether
      	the target allows a particular type to be used as an array element.
      	(create_array_type_for_decl): Likewise.
      	(cp_finish_decl): Use verify_type_context to check whether
      	the target allows static member variables of a particular type.
      	(grokdeclarator): Likewise.  Also use verify_type_context to check
      	whether the target allows non-static member variables of a particular
      	type.
      	* except.c: Include target.h.
      	(is_admissible_throw_operand_or_catch_parameter): Use
      	verify_type_context to check whether the target allows particular
      	types to be thrown and caught.
      	* typeck2.c (add_exception_specifier): Likewise.
      	* init.c (build_new_1): Use verify_type_context to check whether
      	the target allows particular types to be dynamically allocated.
      	(build_vec_delete_1, build_delete): Use verify_type_context to check
      	whether the target allows particular types to be deleted.
      	* lambda.c (add_capture): Use verify_type_context to check
      	whether the target allows particular types to be captured by copy.
      	* pt.c: Include target.h.
      	(instantiate_class_template_1): Use verify_type_context to check
      	whether the target allows non-static member variables of a particular
      	type.
      	* typeck.c (cxx_alignof_expr): Use verify_type_context to check
      	whether the target allows the alignment of a particular type
      	to be measured.
      	(pointer_diff, cp_build_unary_op): Use verify_type_context to check
      	whether the target allows arithmetic involving pointers to particular
      	types.
      
      gcc/testsuite/
      	* g++.dg/ext/sve-sizeless-1.C: New test.
      	* g++.dg/ext/sve-sizeless-2.C: Likewise.
      
      From-SVN: r279058
      Richard Sandiford committed
    • Fix unrecognised GCN instruction. · 1e8f5d49
      2019-12-06  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* config/gcn/gcn-valu.md (gather<mode>_insn_1offset<exec>): Use %o
      	in the asm output.
      
      From-SVN: r279055
      Andrew Stubbs committed
    • Enable QI/HImode vector moves · 2b99bed8
      2019-12-06  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* config/gcn/gcn-valu.md (VEC_1REG_MODE): Remove V64QI and V64HI.
      	(VEC_1REG_ALT): Likewise.
      	(VEC_ALL1REG_MODE): New mode iterator.
      	(VEC_1REG_INT_MODE): Remove V64QI and V64HI.
      	(VEC_1REG_INT_ALT): Likewise.
      	(VEC_ALL1REG_INT_MODE): New mode interator.
      	(VEC_ALL1REG_INT_ALT): Likewise.
      	(VEC_REG_MODE): Remove V64QI and V64HI.
      	(VEC_ALLREG_MODE): New mode interator.
      	(vec_merge): Change to VEC_ALLREG_MODE.
      	(vec_merge_with_clobber): Likewise.
      	(vec_merge_with_vcc): Likewise.
      	(mov<mode>): Likewise.
      	(mov<mode>_unspec): Likewise.
      	(*mov<mode>): Change to VEC_ALL1REG_MODE.
      	(mov<mode>_exec): Likewise.
      	(*mov<mode>_exec_match): Likewise.
      	(mov<mode>_sgprbase): Likewise.
      	(reload_in<mode>): Change to VEC_ALLREG_MODE.
      	(reload_out<mode>): Likewise.
      	(scalar address splits): Likewise.
      	(*vec_set<mode>): Change to VEC_ALL1REG_MODE.
      	(vec_set<mode>): Change to VEC_ALLREG_MODE.
      	(*vec_set<mode>_1): Change to VEC_ALL1REG_MODE.
      	(vec_duplicate<mode><exec>): Likewise.
      	(vec_extract<mode><scalar_mode>): Likewise.
      	(vec_init<mode><scalar_mode>): Change to VEC_ALLREG_MODE.
      	(gather_load<mode>): Likewise.
      	(gather<mode>_exec): Likewise.
      	(gather<mode>_expr<exec>): Likewise.
      	(gather<mode>_insn_1offset<exec>): Likewise.
      	(gather<mode>_insn_1offset_ds<exec>): Likewise.
      	(gather<mode>_insn_2offsets<exec>): Likewise.
      	(ds_bpermute<mode>): Change to VEC_ALL1REG_MODE.
      	(VEC_INT_MODE): Remove V64QI and V64HI.
      	(vcond_mask_<mode>di): Change to VEC_ALLREG_MODE.
      	(vcond<VEC_1REG_MODE:mode><VEC_1REG_ALT:mode>): Change to
      	VEC_ALL1REG_MODE.
      	(vcond<VEC_1REG_MODE:mode><VEC_1REG_ALT:mode>_exec): Likewise.
      	(vcondu<VEC_1REG_MODE:mode><VEC_1REG_INT_ALT:mode>): Likewise.
      	(vcondu<VEC_1REG_MODE:mode><VEC_1REG_INT_ALT:mode>_exec): Likewise.
      	(maskload<mode>di): Change to VEC_ALL1REG_MODE.
      	(maskstore<mode>di): Likewise.
      	(mask_gather_load<mode>): Likewise.
      	(mov_from_lane63_<mode>): Likewise.
      	* config/gcn/gcn.c (gcn_vector_mode_supported_p): Renable V64QImode
      	and V64HImode vectorization.
      	(gcn_related_vector_mode): New function.
      	(TARGET_VECTORIZE_RELATED_MODE): New define.
      
      From-SVN: r279053
      Andrew Stubbs committed
    • re PR fortran/92775 (Incorrect expression in DW_AT_byte_stride on an array) · 2297a38e
      	PR fortran/92775
      	* trans.h (struct lang_type, struct lang_decl): Remove span member.
      	(GFC_DECL_SPAN, GFC_TYPE_ARRAY_SPAN): Remove macros.
      	* trans-array.h (gfc_get_descriptor_offsets_for_info): Add another
      	argument.
      	* trans-array.c (gfc_get_descriptor_offsets_for_info): Add SPAN_OFF
      	argument and initialize *SPAN_OFF to the offset of span field.
      	* trans-types.c (gfc_get_array_descr_info): Adjust
      	gfc_get_descriptor_offsets_for_info caller.  Compute elem_size
      	as base->span instead of TYPE_SIZE_UNIT (etype) constant.
      
      From-SVN: r279045
      Jakub Jelinek committed
    • [OpenMP/OpenACC/Fortran] Fix mapping of optional (present|absent) arguments · 6e4d01d6
      2019-12-06  Tobias Burnus  <tobias@codesourcery.com>
                  Kwok Cheung Yeung <kcy@codesourcery.com>
      
              gcc/fortran/
              * trans-openmp.c (gfc_build_conditional_assign,
              gfc_build_conditional_assign_expr): New static functions.
              (gfc_omp_finish_clause, gfc_trans_omp_clauses): Handle mapping of
              absent optional arguments and fix mapping of present optional args.
      
              gcc/
              * omp-low.c (lower_omp_target): For optional arguments, deref once
              more to obtain the type.
      
              libgomp/
              * oacc-mem.c (update_dev_host, gomp_acc_insert_pointer): Just return
              if input it a NULL pointer.
              * testsuite/libgomp.oacc-c-c++-common/lib-43.c: Remove; dependent on
              diagnostic of NULL pointer.
              * testsuite/libgomp.oacc-c-c++-common/lib-47.c: Ditto.
              * testsuite/libgomp.fortran/optional-map.f90: New.
              * testsuite/libgomp.fortran/use_device_addr-1.f90
              (test_dummy_opt_callee_1_absent): New.
              (test_dummy_opt_call_1): Call it.
              * testsuite/libgomp.fortran/use_device_addr-2.f90: Likewise.
              * testsuite/libgomp.fortran/use_device_addr-3.f90: Likewise.
              * testsuite/libgomp.fortran/use_device_addr-4.f90: Likewise.
              * testsuite/libgomp.oacc-fortran/optional-cache.f95: New.
              * testsuite/libgomp.oacc-fortran/optional-data-copyin-by-value.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-data-copyin.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-data-copyout.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-data-enter-exit.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-declare.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-firstprivate.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-host_data.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-nested-calls.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-private.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-reduction.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-update-device.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-update-host.f90: New.
      
      
      Co-Authored-By: Kwok Cheung Yeung <kcy@codesourcery.com>
      
      From-SVN: r279043
      Tobias Burnus committed
    • match.pd (nop_convert): Remove empty match. · e150da38
      2019-12-06  Richard Biener  <rguenther@suse.de>
      
      	* match.pd (nop_convert): Remove empty match.  Use nop_convert?
      	everywhere.
      
      From-SVN: r279040
      Richard Biener committed
    • [testsuite][aarch64] type_redef_11.c: Update expected diagnostics. · 998d6381
      After the fix for PR c/36941 and PR c/88827 (r278976), this test emits
      a different error message and needs an update.
      
      2019-12-06  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	PR c/36941
      	PR c/88827
      	* gcc.target/aarch64/sve/acle/general-c/type_redef_11.c: Update
      	expected diagnostics.
      
      From-SVN: r279039
      Christophe Lyon committed
    • Avoid quadratic behaviour in prune_runtime_alias_test_list · ea1ff9e4
      prune_runtime_alias_test_list used ordered_remove to remove a merged
      alias pair, which made the function quadratic when many aliases could
      be removed.
      
      I had a testcase in which these memmoves accounted for an impressive
      85% of compile time.  The fact that we had so many probably shows
      a deeper problem, but still, it's easy to remove as we go.
      
      2019-12-06  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-data-ref.c (prune_runtime_alias_test_list): Exit early
      	for empty vectors.  Avoid using ordered_remove and instead
      	shuffle the vector as we go.
      
      From-SVN: r279038
      Richard Sandiford committed
    • genmatch.c (enum tree_code): Remove CONVERT{0,1,2} and VIEW_CONVERT{0,1,2}. · 28fabd43
      2019-12-06  Richard Biener  <rguenther@suse.de>
      
      	* genmatch.c (enum tree_code): Remove CONVERT{0,1,2} and
      	VIEW_CONVERT{0,1,2}.
      	(expr::opt_grp): Add and initialize.
      	(lower_opt_convert): Rename to ...
      	(lower_opt): ... and work on opt_grp, simply switching operations
      	from being optional to being present or not.
      	(has_opt_convert): Rename to ...
      	(has_opt): ... and adjust.
      	(parser::parse_operation): Return the optional opt_grp,
      	remove special-casing of conditional operations and more generally
      	parse [digit]'?'.
      	(parser::parse_expr): Stick on the parsed opt_grp and perform
      	rough verification.
      	(parser::parse_for): Remove now unnecessary code.
      	(main): Likewise.
      	* doc/match-and-simplify.texi: Mention ? now works on all
      	unary operations and also match predicates.
      
      From-SVN: r279037
      Richard Biener committed
    • cgraphclones.c (cgraph_node::create_clone): Only localize toplevel functions, not inline clones. · f7f6be76
      	* cgraphclones.c (cgraph_node::create_clone): Only localize toplevel
      	functions, not inline clones.
      
      From-SVN: r279036
      Jan Hubicka committed
    • * cfgexpand.c (expand_debug_expr): Do not ICE on SAD_EXPR. · b51200e2
      From-SVN: r279035
      Jan Hubicka committed
    • genmatch.c (c_expr::gen_transform): Emit newlines from line number changes… · 330a968c
      genmatch.c (c_expr::gen_transform): Emit newlines from line number changes rather than after every semicolon.
      
      2019-12-06  Richard Biener  <rguenther@suse.de>
      
      	* genmatch.c (c_expr::gen_transform): Emit newlines from line
      	number changes rather than after every semicolon.
      
      From-SVN: r279034
      Richard Biener committed
    • re PR tree-optimization/92819 (Worse code generated on avx2 due to simplify_vector_constructor) · 2ef27856
      2019-12-06  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92819
      	* match.pd (VEC_PERM_EXPR -> BIT_INSERT_EXPR): Handle inserts
      	into the last lane.  For two-element vectors try inserting
      	into the last lane when inserting into the first fails.
      
      	* gcc.target/i386/pr92819-1.c: New testcase.
      	* gcc.target/i386/pr92803.c: Adjust.
      
      From-SVN: r279033
      Richard Biener committed
    • re PR go/92810 (Compiling GCC go for aarch64_be-marvell-linux-gnu fails) · 9961856c
      	PR go/92810
          libgo: recognize aarch64_be as arm64be
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/210038
      
      From-SVN: r279032
      Ian Lance Taylor committed
    • PR testsuite/92829 - several test case failures starting with r278983 · 4e22a7ea
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/Warray-bounds-56.c: Rearrange code to avoid powerpc64*
      	failures.
      
      From-SVN: r279031
      Martin Sebor committed