1. 17 Sep, 2019 16 commits
    • [Ada] GNAT.Expect (Expect_Internal): Try to call 'poll' few times · 19716ceb
      'poll' returns -1 in case of any error (including interruption by a
      signal), so call need to be repeated few times to avoid false failures.
      
      2019-09-17  Vadim Godunko  <godunko@adacore.com>
      
      gcc/ada/
      
      	* libgnat/g-expect.adb (Expect_Internal): Try to call 'poll' few
      	times.
      
      From-SVN: r275782
      Vadim Godunko committed
    • [Ada] Avoid to close irrelevant file descriptors · b9bfbf45
      'Close' subprogram of GNAT.Expect can close irrelevant file descriptors
      when 'Expect' was terminated by Process_Died exception and any file open
      operations was done before call to 'Close'.
      
      2019-09-17  Vadim Godunko  <godunko@adacore.com>
      
      gcc/ada/
      
      	* libgnat/g-expect.ads, libgnat/g-expect.adb (Close_Input): New
      	subprogram.
      	(Get_Command_Output): Call Close_Input to close input stream.
      	(Expect_Internal): Likewise.
      	(Close): Likewise.
      	* libgnat/g-exptty.adb (Close): Likewise.
      
      gcc/testsuite/
      
      	* gnat.dg/expect3.adb: New testcase.
      
      From-SVN: r275781
      Vadim Godunko committed
    • [Ada] A new utility routine for detecting attribute 'Old · ee7c961d
      Add a utility routine for detecting attribute 'Old. It will be
      immediately reused in the GNATprove backend.
      
      2019-09-17  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* sem_util.ads, sem_util.adb (Is_Attribute_Old): New utility
      	routine.
      
      From-SVN: r275780
      Piotr Trojanek committed
    • [Ada] Do not inline dispatching operations in GNATprove mode · cbb0b553
      In GNATprove, local subprograms without contracts are candidates for
      inlining, so that they are only analyzed in the context of their calls.
      This does not apply to dispatching operations, which may be called
      through dispatching, in an unknown calling context. Hence such
      operations should not be considered as candidates for inlining.
      
      There is no test as this has no effect on compilation.
      
      2019-09-17  Yannick Moy  <moy@adacore.com>
      
      gcc/ada/
      
      	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Add handling
      	for dispatching operations.
      
      From-SVN: r275779
      Yannick Moy committed
    • [Ada] In a generic use Presanalyze_Spec_Expression on Predicates · a9a08e6d
      When verifying that the meaning of an aspect has not changed between the
      freeze point of the entity and the end of the declarations, we analkyze
      a copy of the expression to verify its conformance to previous analysis.
      If the expression contains overloaded references, these have to be
      resolved, which is not done if the expression is only preanalyzed.  This
      applies in particular to expressions in predicates.
      
      2019-09-17  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): In a
      	generic context, for a Predicate aspect, use
      	Preanalyze_Spec_Expression to verify conformance.
      
      gcc/testsuite/
      
      	* gnat.dg/predicate13.adb, gnat.dg/predicate13.ads: New
      	testcase.
      
      From-SVN: r275778
      Ed Schonberg committed
    • [Ada] Missing tagged type decoration in corresponding record subtypes · 01e44bfa
      The frontend silently skips propagating attribute Is_Tagged_Type to the
      constrained corresponding record subtype associated with a protected
      type or task type with discriminants. This change does not affect the
      functionality of the compiler; it leaves more clean the decoration of
      internal entities.
      
      2019-09-17  Javier Miranda  <miranda@adacore.com>
      
      gcc/ada/
      
      	* sem_ch3.adb (Constrain_Corresponding_Record): Propagate
      	attribute Is_Tagged_Type.
      
      From-SVN: r275777
      Javier Miranda committed
    • [Ada] Ada 2020: Raise expressions in limited contexts (AI12-0172) · 32794080
      This patch adds support for the use of raise expressions in more
      limited contexts (as described in the Ada Isssue AI12-0172).
      
      2019-09-17  Javier Miranda  <miranda@adacore.com>
      
      gcc/ada/
      
      	* exp_ch3.adb (Build_Record_Init_Proc): Do not generate code to
      	adjust the tag component when the record is initialized with a
      	raise expression.
      	* sem_aggr.adb (Valid_Limited_Ancestor): Return True for
      	N_Raise_Expression nodes.
      	(Valid_Ancestor_Type): Return True for raise expressions.
      	* sem_ch3.adb (Analyze_Component_Declaration): Do not report an
      	error when a component is initialized with a raise expression.
      	* sem_ch4.adb (Analyze_Qualified_Expression): Do not report an
      	error when the aggregate has a raise expression.
      
      gcc/testsuite/
      
      	* gnat.dg/limited4.adb: New testcase.
      
      From-SVN: r275776
      Javier Miranda committed
    • [Ada] Ignore missing ALI files in GNATprove mode · 92167df3
      This change only affects GNATprove backend, where it avoids spurious
      errors on missing ALI files for units indirectly withed from the current
      unit and processed as part of a different .gpr project.
      
      No test provided, because only GNATprove is affected.
      
      2019-09-17  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* ali.ads: Fix casing in comment.
      	* ali-util.ads, ali-util.adb (Read_Withed_ALIs): Remove
      	Ignore_Errors parameter; it was only set to non-default value of
      	True when running in GNATprove_Mode and wrongly reset to False
      	when calling this routine recursively. Now in GNATprove mode we
      	want it to be always True, so in fact it is equivalent to
      	GNATProve_Mode flag itself (which was already used in this
      	routine).
      
      From-SVN: r275775
      Piotr Trojanek committed
    • [Ada] PR ada/91268 Do not redefine macros · 5c7cf10a
      This should fix PR ada/91268 by only defining macros if not already
      done.
      
      2019-09-17  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* adaint.c (_REENTRANT, _THREAD_SAFE): Only define if needed.
      
      From-SVN: r275774
      Arnaud Charlet committed
    • [Ada] Refine change for bit-packed slices · 5387a3f5
      We use Long_Long_Integer'Size / 2 instead of 4 * 8 to support
      specifying a target configuration file where the largest integer is
      32 bits instead of 64.
      
      2019-09-17  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* libgnat/s-bitfie.ads (Val_Bits, Val_Bytes): Define from
      	Long_Long_Integer'Size.
      
      From-SVN: r275773
      Arnaud Charlet committed
    • [Ada] Adding assertions on extra formals for BIP function calls · 1ed19d98
      This patch adds assertions to ensure that the frontend passes to the
      backend the right number of extra parameters required for build in place
      function calls. No functional change.
      
      2019-09-17  Javier Miranda  <miranda@adacore.com>
      
      gcc/ada/
      
      	* exp_ch6.ads (Needs_BIP_Task_Actuals): New subprogram.
      	* exp_ch6.adb (Add_Task_Actuals_To_Build_In_Place_Call): Code
      	cleanup.
      	(Check_Number_Of_Actuals): New subprogram.
      	(Make_Build_In_Place_Call_In_Allocator): Adding assertion.
      	(Make_Build_In_Place_Call_In_Anonymous_Context): Adding
      	assertion.
      	(Make_Build_In_Place_Call_In_Assignment): Adding assertion.
      	(Make_Build_In_Place_Call_In_Object_Declaration): Code cleanup
      	plus assertion addition.
      	(Needs_BIP_Task_Actuals): New subprogram.
      	* sem_ch6.adb (Create_Extra_Formals): Rely on
      	Needs_BIP_Task_Actuals() to check if the master of the tasks to
      	be created, and the caller's activation chain formals are
      	needed.
      
      From-SVN: r275772
      Javier Miranda committed
    • [Ada] Avoid touching potentially nonexistent memory · 2d319f3a
      ...in cases where the Val_2 might cross a page boundary, and the second
      page is now known to exist.
      
      Copy_Bitfield is still disabled in the compiler: no test possible.
      
      2019-09-17  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* libgnat/s-bituti.adb (Get_Val_2, Set_Val_2): Use new routines
      	for getting and setting a Val_2, avoiding touching the second
      	half when that half might not exist.
      	* exp_ch5.adb (Expand_Assign_Array_Loop_Or_Bitfield): Correct
      	tests for potential volatile or independent components. In
      	particular, do not call Prefix unless we know it's a slice.
      
      From-SVN: r275771
      Bob Duff committed
    • [Ada] Support for local unix sockets in GNAT.Sockets API · 38c4e50d
      Sock_Addr_Type has Family_Unix variant now. This variant can be created
      with function Unix_Local_Addr call. And this variant is working in
      GNAT.Socket routines where it is appropriate.
      
      2019-09-17  Dmitriy Anisimkov  <anisimko@adacore.com>
      
      gcc/ada/
      
      	* gsocket.h: Include sys/un.h.
      	* s-oscons-tmplt.c (AF_UNIX): New constant generation.
      	(SIZEOF_sockaddr_un): Idem.
      	* libgnat/g-socket.ads (Family_Type): New value Family_Unix
      	added.
      	(Family_Inet_4_6): New subtype only for network families.
      	(Sock_Addr_Type): Add Unbounded_String field for Family_Unix
      	variant.
      	(Unix_Socket_Address): Create Sock_Addr_Type from socket
      	pathname.
      	(Network_Socket_Address): Create Sock_Addr_Type from
      	Inet_Addr_Type and Port_Type parameters.
      	* libgnat/g-socket.adb: Support local unix address in socket
      	routines.
      	(Get_Address_Info): Disable warning about Result may be
      	referenced before it has a value. Remove duplicated code to exit
      	from Look_For_Supported.
      	* libgnat/g-sothco.ads (Unix_Name_Length): New constant defining
      	maximum number of characters in local socket address path.
      	(Sockaddr): Add variant for Family_Unix address family. Move
      	Sin_Port and Sin_Family to Family_Inet section. Add Sin6_Port
      	and Sin6_Family to Family_Inet6 section.
      	(Set_Address): Add out parameter Length to return valuable
      	Sockaddr data length.
      	(Get_Address): Add input parameter Length to set valuable
      	Sockaddr data length.
      	* libgnat/g-sothco.adb: Support local unix address in socket
      	routines.
      
      From-SVN: r275770
      Dmitriy Anisimkov committed
    • [Ada] Fix wrong value of 'Size for slices of bit-packed arrays · 37915d02
      This fixes a long-standing issue in the compiler which would return
      a wrong value for the Size attribute applied to slices of bit-packed
      arrays whose size is not a multiple of the storage unit.
      
      The problem is that the computation was done in the code generator
      after the bit-packed array had been internally rewritten into an
      array of bytes, so the Size was always rounded up to the next byte.
      
      The computation is now rewritten into the product of the Length and
      Compnent_Size attribute of the slices before being sent to the code
      generator.
      
      2019-09-17  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* exp_attr.adb (Expand_Size_Attribute): Chain the special cases
      	on the back-end path and rewrite the attribute appled to slices
      	of bit-packed arrays into the product of the Length and the
      	Compoent_Size attributes of the slices.
      	* exp_ch5.adb (Expand_Assign_Array_Bitfield): Use Size attribute
      	directly to compute the bitfield's size.
      
      gcc/testsuite/
      
      	* gnat.dg/pack25.adb: New testcase.
      
      From-SVN: r275769
      Eric Botcazou committed
    • [Ada] Refine conditions for calling Copy_Bitfield · 38b06e7a
      Avoid calling Copy_Bitfield if there are volatile or independent
      components that might be read or written. The test is conservative.
      
      2019-09-17  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* exp_ch5.adb (Expand_Assign_Array_Loop_Or_Bitfield): Add tests
      	for potential volatile or independent components.
      	* libgnat/s-bituti.adb (Copy_Small_Bitfield,
      	Copy_Large_Bitfield): Move declarations to more appropriate
      	place.
      
      From-SVN: r275768
      Bob Duff committed
    • Daily bump. · 8ba9c127
      From-SVN: r275763
      GCC Administrator committed
  2. 16 Sep, 2019 17 commits
    • decl.c (grokdeclarator): Use declspecs->locations and declarator->id_loc in a few error messages. · 61b204bf
      /cp
      2019-09-16  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* decl.c (grokdeclarator): Use declspecs->locations and
      	declarator->id_loc in a few error messages.
      	* pt.c (finish_member_template_decl): Use DECL_SOURCE_LOCATION.
      	(push_template_decl_real): Likewise.
      
      /testsuite
      2019-09-16  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* g++.dg/ext/int128-6.C: New.
      	* c-c++-common/pr68107.c: Test location(s).
      	* g++.dg/other/large-size-array.C: Likewise.
      	* g++.dg/template/dtor2.C: Likewise.
      	* g++.dg/template/error9.C: Likewise.
      	* g++.dg/tls/diag-2.C: Likewise.
      	* g++.dg/tls/diag-4.C: Likewise.
      	* g++.dg/tls/diag-5.C: Likewise.
      	* g++.old-deja/g++.pt/memtemp71.C: Likewise.
      
      From-SVN: r275759
      Paolo Carlini committed
    • pr89386.c (foo): Fix return type. · 18907822
      	* gcc.target/i386/pr89386.c (foo): Fix return type.
      	* gcc.target/i386/pr89386-1.c (foo): Ditto.
      
      From-SVN: r275757
      Uros Bizjak committed
    • * config/i386/sync.md (atomic_store<mode>): Improve comment. · 9b47928e
      From-SVN: r275755
      Uros Bizjak committed
    • re PR target/91719 (gcc compiles seq_cst store on x86-64 differently from clang/icc) · 48d552e5
      	PR target/91719
      	* config/i386/i386.h (TARGET_USE_XCHG_FOR_ATOMIC_STORE): New macro.
      	* config/i386/x86-tune.def (X86_TUNE_USE_XCHG_FOR_ATOMIC_STORE): New.
      	* config/i386/sync.md (atomic_store<mode>): emit XCHG for
      	TARGET_USE_XCHG_FOR_ATOMIC_STORE.
      
      From-SVN: r275754
      Uros Bizjak committed
    • * Makefile.in (build/genmatch.o): Depend on $(CPPLIB_H). · e4ab9e06
      From-SVN: r275753
      Jason Merrill committed
    • Rewrite second part of or_comparisons_1 into match.pd. · cda65821
      2019-09-16  Martin Liska  <mliska@suse.cz>
      
      	* gimple-fold.c (or_comparisons_1): Remove rules moved
      	to ...
      	* match.pd: ... here.
      
      From-SVN: r275752
      Martin Liska committed
    • Rewrite first part of or_comparisons_1 into match.pd. · 130c4034
      2019-09-16  Martin Liska  <mliska@suse.cz>
      
      	* gimple-fold.c (or_comparisons_1): Remove rules
      	moved to ...
      	* match.pd: ... here.
      
      From-SVN: r275751
      Martin Liska committed
    • Rewrite part of and_comparisons_1 into match.pd. · ae9c3507
      2019-09-16  Martin Liska  <mliska@suse.cz>
      
      	* genmatch.c (dt_node::append_simplify): Do not print
      	warning when we have duplicate patterns belonging
      	to a same simplify rule.
      	* gimple-fold.c (and_comparisons_1): Remove matching moved to match.pd.
      	(maybe_fold_comparisons_from_match_pd): Handle
      	tcc_comparison as a results.
      	* match.pd: Handle (X == CST1) && (X OP2 CST2) conditions.
      
      From-SVN: r275750
      Martin Liska committed
    • Fix PR88784, middle end is missing some optimizations about unsigned · c16504f6
      2019-09-16  Li Jia He  <helijia@linux.ibm.com>
      	    Qi Feng  <ffengqi@linux.ibm.com>
      
      	PR middle-end/88784
      	* match.pd (x >  y  &&  x != XXX_MIN): Optimize into 'x > y'.
      	(x >  y  &&  x == XXX_MIN): Optimize into 'false'.
      	(x <= y  &&  x == XXX_MIN): Optimize into 'x == XXX_MIN'.
      	(x <  y  &&  x != XXX_MAX): Optimize into 'x < y'.
      	(x <  y  &&  x == XXX_MAX): Optimize into 'false'.
      	(x >= y  &&  x == XXX_MAX): Optimize into 'x == XXX_MAX'.
      	(x >  y  ||  x != XXX_MIN): Optimize into 'x != XXX_MIN'.
      	(x <= y  ||  x != XXX_MIN): Optimize into 'true'.
      	(x <= y  ||  x == XXX_MIN): Optimize into 'x <= y'.
      	(x <  y  ||  x != XXX_MAX): Optimize into 'x != XXX_MAX'.
      	(x >= y  ||  x != XXX_MAX): Optimize into 'true'.
      	(x >= y  ||  x == XXX_MAX): Optimize into 'x >= y'.
      2019-09-16  Li Jia He  <helijia@linux.ibm.com>
      	    Qi Feng  <ffengqi@linux.ibm.com>
      
      	PR middle-end/88784
      	* gcc.dg/pr88784-1.c: New testcase.
      	* gcc.dg/pr88784-2.c: New testcase.
      	* gcc.dg/pr88784-3.c: New testcase.
      	* gcc.dg/pr88784-4.c: New testcase.
      	* gcc.dg/pr88784-5.c: New testcase.
      	* gcc.dg/pr88784-6.c: New testcase.
      	* gcc.dg/pr88784-7.c: New testcase.
      	* gcc.dg/pr88784-8.c: New testcase.
      	* gcc.dg/pr88784-9.c: New testcase.
      	* gcc.dg/pr88784-10.c: New testcase.
      	* gcc.dg/pr88784-11.c: New testcase.
      	* gcc.dg/pr88784-12.c: New testcase.
      
      Co-Authored-By: Qi Feng <ffengqi@linux.ibm.com>
      
      From-SVN: r275749
      Li Jia He committed
    • Auto-generate maybe_fold_and/or_comparisons from match.pd · 5f487a34
      2019-09-16  Li Jia He  <helijia@linux.ibm.com>
      	    Martin Liska  <mliska@suse.cz>
      
      	* gimple-fold.c (and_comparisons_1): Add type as first
      	argument.
      	(and_var_with_comparison): Likewise.
      	(and_var_with_comparison_1): Likewise.
      	(or_comparisons_1): Likewise.
      	(or_var_with_comparison): Likewise.
      	(or_var_with_comparison_1): Likewise.
      	(maybe_fold_and_comparisons): Call maybe_fold_comparisons_from_match_pd.
      	(maybe_fold_or_comparisons): Likewise.
      	(maybe_fold_comparisons_from_match_pd): New.
      	* gimple-fold.h (maybe_fold_and_comparisons): Add type argument.
      	(maybe_fold_or_comparisons): Likewise.
      	* gimple.c (gimple_size): Make it public and add num_ops argument.
      	(gimple_init): New function.
      	(gimple_alloc): Call gimple_init.
      	* gimple.h (gimple_size): New.
      	(gimple_init): Likewise.
      	* tree-if-conv.c (fold_or_predicates): Pass type.
      	* tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
      	* tree-ssa-reassoc.c (eliminate_redundant_comparison): Likewise.
      	(optimize_vec_cond_expr): Likewise.
      	(ovce_extract_ops): Return type of conditional expression.
      	* tree-ssanames.c (init_ssa_name_imm_use): New.
      	(make_ssa_name_fn): Use init_ssa_name_imm_use.
      	* tree-ssanames.h (init_ssa_name_imm_use): New.
      
      Co-Authored-By: Martin Liska <mliska@suse.cz>
      
      From-SVN: r275748
      Li Jia He committed
    • 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
  3. 15 Sep, 2019 7 commits