1. 21 Aug, 2019 26 commits
    • [Ada] More precise propagation of Size attribute in generic instances · 61e33106
      GNATprove analyzer for SPARK code depends on the frontend to accurately
      propagate the known value of Size attribute. This was not done for
      formal type parameters in generic instantiations. Now fixed.
      
      There is no impact on compilation.
      
      2019-08-21  Yannick Moy  <moy@adacore.com>
      
      gcc/ada/
      
      	* sem_ch3.adb (Analyze_Subtype_Declaration): Inherit RM_Size
      	field for formal type parameters in generic instantiations.
      
      From-SVN: r274788
      Yannick Moy committed
    • [Ada] Update references to the SPARK RM · e9934e8c
      2019-08-21  Yannick Moy  <moy@adacore.com>
      
      gcc/ada/
      
      	* sem_spark.adb: Update references to the SPARK RM.
      
      From-SVN: r274787
      Yannick Moy committed
    • [Ada] More complete information level for -gnatR4 output · 3c488e6c
      This instructs -gnatR4 to also list the Etype of components in
      user-declared record types if it is compiler-generated, for example in:
      
      package P3 is
      
          type idx is range 1 .. 100;
      
          type Arr is array (Idx range <>) of Character;
      
          type Rec is record
             C : Arr (1 .. 5);
          end record;
      
      end P3;
      
      2019-08-21  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* repinfo.adb (List_Array_Info): In -gnatR4 mode, set the
      	relevant flag on the component type here instead of...
      	(List_Object_Info): Likewise for the object type.
      	(List_Entities): ...here.  In -gnatR4 mode, recurse into
      	entities local to a record type.
      	(List_Component_Layout): In -gnatR4 mode, mark the type as
      	relevant.
      
      From-SVN: r274786
      Eric Botcazou committed
    • [Ada] Add the System.Bitfield_Utils runtime unit · abdeafa6
      2019-08-21  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-bitutil.o and
      	s-biutin.o.
      	* exp_ch5.adb (Expand_Assign_Array_Bitfield): New function to
      	generate a call to Copy_Bitfield. This is disabled for now.
      	(Expand_Assign_Array_Loop_Or_Bitfield): New function to decide
      	whether to call Expand_Assign_Array_Bitfield.
      	(Expand_Assign_Array): Call Expand_Assign_Array_Loop_Or_Bitfield
      	instead of Expand_Assign_Array_Loop.
      	* libgnat/s-bitfie.ads, libgnat/s-bituti.adb,
      	libgnat/s-bituti.ads: New units.
      	* rtsfind.ads: Add enum literals for accessing Copy_Bitfield.
      
      From-SVN: r274785
      Bob Duff committed
    • [Ada] Bindo.Graphs: Minor typo fixes · a1fda1e8
      2019-08-21  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* bindo-graphs.ads (Iterate_Edges_To_Successors): Fix typo in
      	pragma Inline.
      	* bindo-graphs.adb (Delete_Edge): Fix layout in parameter list.
      
      From-SVN: r274784
      Piotr Trojanek committed
    • [Ada] Undefined master in task with limited class-wide aliased entry formal · 830c5948
      In the case of a task declaring an entry with an aliased formal
      parameter of a limited class-wide type, the front end was creating a
      master object (_master) for the access type generated for such an entry
      formal inside the task specification, even though such access types
      don't need an associated master.  The master object wasn't being copied
      into the procedure expanded for the task body, but a renaming for the
      master appeared in the statements of the task body, and the LLVM back
      end rejects this since the master object doesn't appear in the expanded
      task procedure (for some reason, gigi doesn't complain). This is fixed
      by suppressing the creation of the master object in the case where the
      access-to-limited-class-wide access type is the type of a component in
      an entry's parameter block.  This is similar to the suppression done for
      the master object in other cases, where the access type designates a
      type explicitly containing tasks (though the suppression involves
      testing Comes_From_Source in that case).
      
      No simple test (and this only affects the LLVM-based compiler).
      
      2019-08-21  Gary Dismukes  <dismukes@adacore.com>
      
      gcc/ada/
      
      	* exp_ch3.adb (Build_Master): Suppress call to
      	Build_Class_Wide_Master in the case where the
      	access-to-limited-class-wide type was created for a component in
      	an entry's formal parameter
      	block (Is_Parameter_Block_Component_Type), to prevent a master
      	from being created for such access types generated by the front
      	end in a task spec for entry formals in a parameter block.  Add
      	a ??? about whether this suppression should be done more
      	generally (such as by using Comes_From_Source).
      
      From-SVN: r274783
      Gary Dismukes committed
    • [Ada] Fix type mismatch in extended return statement expansion · bde9a2c2
      This fixes a (sub)type mismatch in the expansion of an extended return
      statement generated for a built-in-place function that doesn't need a
      BIP_Alloc_Form parameter but returns unconstrained.
      
      No functional changes.
      
      2019-08-21  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* exp_ch6.adb (Expand_N_Extended_Return_Statement): In the case
      	of a built-in-place function that doesn't need a BIP_Alloc_Form
      	parameter but returns unconstrained, build the return
      	consistently using the function's result subtype.  Remove bypass
      	added in previous change.
      
      From-SVN: r274782
      Eric Botcazou committed
    • [Ada] Do not rewrite argument of pragma Entry_Queue_Length in analysis · 92ef5772
      It was unusual for the analysis phase of compiler to rewrite static
      expression of pragma Entry_Queue_Length with its value. This typically
      happens when expanding the AST and only if needed for a given backend.
      In particular, GNATprove doesn't need such an expansion and actually
      needs the unrewritten AST to detect references to constants declared
      with SPARK_Mode => Off within a code with SPARK_Mode => On.
      
      This change has no impact on compilation, so no frontend test is
      provided.
      
      2019-08-21  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* sem_prag.adb (Max_Entry_Queue_Length): Do not substitute
      	expression of the pragma argument with its value during
      	analysis.
      	* sem_util.adb (Get_Max_Queue_Length): Compute value of the
      	pragma argument when needed.
      
      From-SVN: r274781
      Piotr Trojanek committed
    • [Ada] Avoid spurious error in GNATprove mode on non-null access types · 5c34f30d
      GNATprove directly handles non-null access checks, and requires that the
      frontend does not insert explicit checks in the form of conditional
      exceptions being raised. Now fixed.
      
      There is no impact on compilation.
      
      2019-08-21  Yannick Moy  <moy@adacore.com>
      
      gcc/ada/
      
      	* checks.adb (Install_Null_Excluding_Check): Do not install
      	check in GNATprove mode.
      
      From-SVN: r274780
      Yannick Moy committed
    • [Ada] Ignore subprogram address in ownership checking · 570d0072
      Ownership checking done as in GNATprove should ignore address of
      subprograms, as it applies only on objects. Now fixed.
      
      There is no impact on compilation.
      
      2019-08-21  Yannick Moy  <moy@adacore.com>
      
      gcc/ada/
      
      	* sem_spark.adb (Process_Path): Do nothing on address of
      	subprogram.
      
      From-SVN: r274779
      Yannick Moy committed
    • [Ada] Fix assertion failure on derived private protected type · 78170c8e
      This fixes an assertion failure on the instantiation of a generic
      package on a type derived from the private view of a protected type,
      ultimately caused by Finalize_Address returning Empty for the subtype
      built for the generic actual type of the instantiation.
      
      Finalize_Address has a special processing for untagged derivations of
      private views, but it would no longer trigger for the subtype because
      this subtype is now represented as a subtype of an implicit derived base
      type instead of as the derived type of an implicit subtype previously.
      
      2019-08-21  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* exp_util.adb (Finalize_Address): Deal consistently with
      	subtypes of private protected types.
      
      gcc/testsuite/
      
      	* gnat.dg/prot9.adb, gnat.dg/prot9_gen.ads,
      	gnat.dg/prot9_pkg1.ads, gnat.dg/prot9_pkg2.ads: New testcase.
      
      From-SVN: r274778
      Eric Botcazou committed
    • [Ada] Replace low-level membership tests with high-level routines · 5188952e
      Code cleanup to improve readablity. Semantics unaffected.
      
      2019-08-21  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* exp_util.adb (Corresponding_Runtime_Package): Use high-level
      	Is_Protected_Type.
      	* sem_ch8.adb (Analyze_Renamed_Entry): Likewise.
      	* sem_ch9.adb (Analyze_Requeue): Likewise.
      
      From-SVN: r274777
      Piotr Trojanek committed
    • [Ada] Missing attribute update in new_copy_tree · 93a08e1e
      The compiler crashes processing an internally generated cloned tree that
      has a subprogram call with a named actual parameter.
      
      2019-08-21  Javier Miranda  <miranda@adacore.com>
      
      gcc/ada/
      
      	* sem_util.adb (Update_Named_Associations): Update
      	First_Named_Actual when the subprogram call has a single named
      	actual.
      
      gcc/testsuite/
      
      	* gnat.dg/implicit_param.adb, gnat.dg/implicit_param_pkg.ads:
      	New testcase.
      
      From-SVN: r274776
      Javier Miranda committed
    • [Ada] doc/Makefile: automatically create doc/share/_static · cfc03d53
      2019-08-21  Joel Brobecker  <brobecker@adacore.com>
      
      gcc/ada/
      
      	* doc/Makefile (mk_empty_dirs): New (PHONY) rule.
      	(%.html, %.pdf, %.txt, %.info, %.texinfo): Add dependencies on
      	mk_empty_dirs.
      
      From-SVN: r274775
      Joel Brobecker committed
    • [Ada] Max_Entry_Queue_Length aspect for protected entries · df2d2fe0
      Allow values of negative one to be accepted as a valid parameter as a
      special case.
      
      2019-08-21  Justin Squirek  <squirek@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_rm/implementation_defined_pragmas.rst: Modify
      	documentation to reflect expected behavior.
      	* gnat_rm.texi: Regenerate.
      	* sem_prag.adb (Analyze_Pragma): Modify handling of pragma
      	Max_Entry_Queue_Length to not reject integer values of negative
      	one.
      	* sem_util.adb (Get_Max_Queue_Length): Add processing for values
      	of negative one to fit within the current scheme.
      
      From-SVN: r274774
      Justin Squirek committed
    • libphobos: Merge upstream druntime 5bb8ce19 · 1e78c638
      Synchronizes extern(C) bindings with latest release.
      
      Reviewed-on: https://github.com/dlang/druntime/pull/2741
      
      libphobos/ChangeLog:
      
      	* libdruntime/Makefile.am (DRUNTIME_DSOURCES_BIONIC): Add
      	core/sys/bionic/string.d.
      	(DRUNTIME_DSOURCES_DARWIN): Add core/sys/darwin/string.d.
      	(DRUNTIME_DSOURCES_DRAGONFLYBSD): Add core/sys/dragonflybsd/string.d,
      	core/sys/dragonflybsd/sys/socket.d.
      	(DRUNTIME_DSOURCES_FREEBSD): Add core/sys/freebsd/string.d.
      	(DRUNTIME_DSOURCES_LINUX): Add core/sys/linux/string.d.
      	(DRUNTIME_DSOURCES_NETBSD): Add core/sys/netbsd/string.d,
      	core/sys/netbsd/sys/featuretest.d.
      	* libdruntime/Makefile.in: Regenerate.
      
      From-SVN: r274773
      Iain Buclaw committed
    • libphobos: Merge upstream druntime 94686651 · 0234a917
      Adds extern(C) bindings for version OpenBSD.
      
      Reviewed-on: https://github.com/dlang/druntime/pull/2748
      
      libphobos/ChangeLog:
      
      	* libdruntime/Makefile.am (DRUNTIME_DSOURCES_OPENBSD): Add
      	core/sys/openbsd/sys/cdefs.d, core/sys/openbsd/sys/elf.d,
      	core/sys/openbsd/sys/elf32.d, core/sys/openbsd/sys/elf64.d,
      	core/sys/openbsd/sys/elf_common.d, core/sys/openbsd/sys/link_elf.d,
      	core/sys/openbsd/sys/mman.d, core/sys/openbsd/time.d.
      	* libdruntime/Makefile.in: Regenerate.
      
      From-SVN: r274772
      Iain Buclaw committed
    • re PR d/91339 (libphobos: ftbfs when the path contains '~') · 134d3a14
      	PR d/91339
      d/dmd: Merge upstream dmd b37a537d3
      
      Fixes the error: cannot find source code for runtime library file
      'object.d' when the path contains '~'.
      
      Reviewed-on: https://github.com/dlang/dmd/pull/10309
      
      From-SVN: r274771
      Iain Buclaw committed
    • libphobos: Merge upstream phobos 66ae77ac3 · 71043642
      Finishes off phobos support for musl targets.
      
      Reviewed-on: https://github.com/dlang/phobos/pull/7108
      
      From-SVN: r274770
      Iain Buclaw committed
    • d: Partially fix ICE: in register_moduleinfo, at d/modules.cc:40 · 7cc9cfd2
      gcc/d/ChangeLog:
      
      	PR d/88722
      	* modules.cc: Include diagnostic.h.
      	(register_moduleinfo): Use sorry instead of gcc_assert for targets
      	without named sections.
      
      From-SVN: r274769
      Iain Buclaw committed
    • d/dmd: Merge upstream dmd 375ed10aa · de83a4c1
      Don't crash when compiling for 16-bit platforms.
      
      Reviewed-on: https://github.com/dlang/dmd/pull/10306
      
      gcc/d/ChangeLog:
      
      	* d-target.cc: Include diagnostic.h.
      	(Target::_init): Set Tsize_t and Tptrdiff_t as D ushort and short if
      	the target pointer size is 2.  Add sorry if the pointer size is not
      	either 2, 4, or 8.
      
      From-SVN: r274768
      Iain Buclaw committed
    • d: Fix ICE: Segmentation fault in build_function_type at gcc/tree.c:8539 · edf09592
      gcc/d/ChangeLog:
      
      	PR d/90446
      	* d-lang.cc (d_type_for_mode): Check for all internal __intN types.
      	(d_type_for_size): Likewise.
      
      From-SVN: r274767
      Iain Buclaw committed
    • d: Fix internal compiler error: in d_build_c_type_nodes, at d/d-builtins.cc:783 · 7610ae80
      gcc/d/ChangeLog:
      
      	PR d/90445
      	* d-builtins.cc (d_build_c_type_nodes): Test UINTMAX_TYPE for setting
      	uintmax_type_node.  Set signed_size_type_node as the signed_type_for
      	size_type_node.
      
      From-SVN: r274766
      Iain Buclaw committed
    • d: Fix internal compiler error: in d_init_builtins, at d/d-builtins.cc:1121 · 2ee3ea4b
      gcc/d/ChangeLog:
      
      	PR d/90444
      	* d-builtins.cc (build_frontend_type): Build anonymous RECORD_TYPE
      	nodes as well, push all fields to the struct members.
      	(d_build_builtins_module): Push anonymous va_list structs to the
      	builtins module, naming them __builtin_va_list.
      	(d_init_builtins): Use sorry instead of gcc_unreachable if va_list did
      	not succeed in being represented as a D type.
      
      From-SVN: r274765
      Iain Buclaw committed
    • re PR testsuite/91458 (FAIL: g++.dg/tree-ssa/pr19807.C -std=gnu++98 … · dcb6ebe3
      re PR testsuite/91458 (FAIL: g++.dg/tree-ssa/pr19807.C  -std=gnu++98  scan-tree-dump-times optimized "&MEM\\\\[\\\\(void .\\\\)&a \\\\+ 8B\\\\]" 3)
      
      PR testsuite/91458
      
      gcc/testsuite/ChangeLog:
      	* g++.dg/tree-ssa/ssa-dse-1.C: Use the same search pattern
      	unconditionally (correcting r272199, PR middle-end/90676).
      	* gcc.dg/tree-prof/stringop-2.c: Same.
      
      From-SVN: r274764
      Martin Sebor committed
    • Daily bump. · a707d6ad
      From-SVN: r274763
      GCC Administrator committed
  2. 20 Aug, 2019 14 commits
    • Do not try to process deleted headers with Doxygen · 9e3c41ab
      	* doc/doxygen/user.cfg.in (INPUT): Remove profile mode headers.
      
      From-SVN: r274758
      Jonathan Wakely committed
    • Fix markdown in Doxygen comments for std::reduce · eb0e8589
      	* include/std/numeric (reduce): Fix Doxygen markup.
      
      From-SVN: r274757
      Jonathan Wakely committed
    • PR libstdc++/91371 make std::is_function handle other calling conventions · 72459cfd
      The x86 attributes such as ms_abi, stdcall, fastcall etc. alter the
      function type, which means that functions with one of those attributes
      do not match any of the partial specializations of std::is_function.
      
      Rather than duplicating the list for every calling convention, use a
      much simpler definition of std::is_function.
      
      Also redefine __is_referenceable to not rely on partial specializations
      for each type of referenceable function.
      
      	PR libstdc++/91371
      	* include/std/type_traits (is_function): Simplify definition. Remove
      	partial specializations for function types.
      	(__is_referenceable): Simplify definition.
      	* testsuite/20_util/bind/91371.cc: New test.
      	* testsuite/20_util/is_function/91371.cc: New test.
      	* testsuite/20_util/is_function/value.cc: Check more pointer types.
      	* testsuite/20_util/is_member_function_pointer/91371.cc: New test.
      	* testsuite/20_util/is_object/91371.cc: New test.
      
      From-SVN: r274756
      Jonathan Wakely committed
    • compiler, runtime: implement shifts by signed amounts · 43055d23
          
          Shifting by signed types is a new language feature in Go 1.13.
          
          This requires a patch to the testsuite.
          
          Updates golang/go#19113
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/190977
      
      	* go.test/test/fixedbugs/bug073.go: Update for language changes.
      
      From-SVN: r274755
      Ian Lance Taylor committed
    • function.c (assign_parm_find_stack_rtl): Use known_eq instead of ==. · 5ba5ad30
      2019-08-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * function.c (assign_parm_find_stack_rtl): Use known_eq instead of ==.
      
      From-SVN: r274751
      Bernd Edlinger committed
    • tree-ssa-dse.c (dse_optimize_redundant_stores): Improved check to catch more… · 529f3048
      tree-ssa-dse.c (dse_optimize_redundant_stores): Improved check to catch more redundant zero initialization cases.
      
      2019-08-19  Matthew Beliveau  <mbelivea@redhat.com>
      
      	* tree-ssa-dse.c (dse_optimize_redundant_stores): Improved check to
      	catch more redundant zero initialization cases.
      	(dse_dom_walker::dse_optimize_stmt): Likewise.
      
      From-SVN: r274749
      Matthew Beliveau committed
    • re PR lto/91307 (-flto causes binary to vary) · 00f7060a
      2019-08-20  Richard Biener  <rguenther@suse.de>
      
      	PR lto/91307
      	* ipa.c (cgraph_build_static_cdtor_1): Use names not recognizable
      	by collect2 when targetm.have_ctors_dtors which avoids dragging
      	in temporary filenames from LTO input objects.
      
      From-SVN: r274748
      Richard Biener committed
    • re PR tree-optimization/37242 (missed FRE opportunity because of signedness of addition) · 3ed01d54
      2019-08-20  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/37242
      	* tree-ssa-sccvn.c (visit_nary_op): Also CSE (T)(a + b)
      	to (T)a + (T)b if we know that a + b does not overflow.
      
      	* gcc.dg/tree-ssa/ssa-fre-80.c: New testcase.
      
      From-SVN: r274746
      Richard Biener committed
    • Intrinsic documentation changes. · a53aa4da
      Add notes to DIM, MOD and MODULE stating that as a GNU extension,
      integers of different kinds are allowed as arguments and that the
      return value has the larger kind.
      
      From-SVN: r274744
      Mark Eggleston committed
    • [Ada] Unnesting: take inlining (-gnatn) into account · dd241b94
      This affects only LLVM-based compilation.
      
      2019-08-20  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* exp_unst.adb (Unnest_Subprograms, Unnest_Subprogram): Take
      	inlining (-gnatn) into account.
      
      From-SVN: r274743
      Arnaud Charlet committed
    • [Ada] Crash on a Storage_Size aspect depending on attr. of another type · b82f1618
      This patch fixes a crash on an aspect specification for Storage_Size for
      a type T when the expression for the aspect depends on attributes of a
      previously declared type that is not frozen yet. The  temporary
      declaration that captures the value of the aspect must be part of the
      actions attached to the freeze node for T.
      
      2019-08-20  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case
      	Storage_Size): If the expression for Storage_Size is not static
      	it may depend on characterstics of another type that may bot be
      	frozen yet, so the elaboration of the expression for the aspect
      	must be attached directly to the freeze actions of the type to
      	which it applies.
      
      gcc/testsuite/
      
      	* gnat.dg/storage_size1.adb: New testcase.
      
      From-SVN: r274742
      Ed Schonberg committed
    • [Ada] Inconsistent scope chain due to quantified expression · aa090e20
      Routine Build_DIC_Procedure_Declaration appears to be heavily inspired
      by Build_Invariant_Procedure_Declaration; they both wrap an expression
      attached to a type inside an internal procedure. Initially none of them
      were calling Set_Last_Entity.
      
      For Build_Invariant_Procedure_Declaration this was fixed previously.
      For Build_DIC_Procedure_Declaration this is fixed here.
      
      The issue affects the GNATprove tool and is not visible to end users of
      the GNAT compiler. No simple test is available because this would
      require a debug session.
      
      2019-08-20  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* exp_util.adb (Build_DIC_Procedure_Declaration): Set the last
      	entity of the generated Default_Initial_Condition procedure in
      	order to construct a proper entity chain.
      
      From-SVN: r274741
      Piotr Trojanek committed
    • [Ada] Adapt GNATprove expansion for slices with access prefix · dd6e65c6
      The special expansion done in GNATprove mode should be adapted to slices
      where the prefix has access type, like indexed expressions.
      
      There is no impact on compilation.
      
      2019-08-20  Yannick Moy  <moy@adacore.com>
      
      gcc/ada/
      
      	* exp_spark.adb (Expand_SPARK_N_Slice_Or_Indexed_Component):
      	Renaming of function to apply to slices as well.
      	(Expand_SPARK): Expand prefix of slices of access type.
      
      From-SVN: r274740
      Yannick Moy committed
    • [Ada] Improve efficiency of aggregates with <> · d4e4e88a
      The generated code has been improved so that aggregates with <> are more
      efficient.  No change in behavior; no test.
      
      2019-08-20  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* exp_aggr.adb (Expand_Array_Aggregate): Use build-in-place in
      	the nonlimited case in STEP 4. This improves the efficiency of
      	things like (1 .. 1000 => <>).  We still generate some code for
      	that, unfortunately, but it is much improved.
      	(Aggr_Assignment_OK_For_Backend): Return false if <> components
      	are present.
      
      From-SVN: r274739
      Bob Duff committed