1. 19 Aug, 2019 36 commits
    • re PR tree-optimization/91403 (GCC fails with ICE.) · 3bbc329b
      2019-08-19  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/91403
      	* tree-scalar-evolution.c (follow_ssa_edge_binary): Inline
      	cases we can handle with tail-recursion...
      	(follow_ssa_edge_expr): ... here.  Do so.
      
      From-SVN: r274672
      Richard Biener committed
    • PR c++/91264 - detect modifying const objects in constexpr. · 04e1749c
      	* constexpr.c (modifying_const_object_error): New function.
      	(cxx_eval_call_expression): Set TREE_READONLY on a CONSTRUCTOR of
      	a const-qualified object after it's been fully constructed.
      	(modifying_const_object_p): New function.
      	(cxx_eval_store_expression): Detect modifying a const object
      	during constant expression evaluation.
      	(cxx_eval_increment_expression): Use a better location when building
      	up the store.
      	(cxx_eval_constant_expression) <case DECL_EXPR>: Mark a constant
      	object's constructor TREE_READONLY.
      
      	* g++.dg/cpp1y/constexpr-tracking-const1.C: New test.
      	* g++.dg/cpp1y/constexpr-tracking-const2.C: New test.
      	* g++.dg/cpp1y/constexpr-tracking-const3.C: New test.
      	* g++.dg/cpp1y/constexpr-tracking-const4.C: New test.
      	* g++.dg/cpp1y/constexpr-tracking-const5.C: New test.
      	* g++.dg/cpp1y/constexpr-tracking-const6.C: New test.
      	* g++.dg/cpp1y/constexpr-tracking-const7.C: New test.
      	* g++.dg/cpp1y/constexpr-tracking-const8.C: New test.
      	* g++.dg/cpp1y/constexpr-tracking-const9.C: New test.
      	* g++.dg/cpp1y/constexpr-tracking-const10.C: New test.
      	* g++.dg/cpp1y/constexpr-tracking-const11.C: New test.
      	* g++.dg/cpp1y/constexpr-tracking-const12.C: New test.
      	* g++.dg/cpp1y/constexpr-tracking-const13.C: New test.
      	* g++.dg/cpp1y/constexpr-tracking-const14.C: New test.
      
      From-SVN: r274671
      Marek Polacek committed
    • Update BOZ constant documentation. · 5a9ea4ff
      In the section "BOZ Literal constants" delete paragraph about integer
      overload errors when initialising integer variables with BOZ constants
      as these no longer occur.
      
      From-SVN: r274667
      Mark Eggleston committed
    • [Ada] Fix documentation for stream oriented attributes · 8fd97fcd
      2019-08-19  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_rm/implementation_advice.rst: Fix documentation for
      	stream oriented attributes.
      	* gnat_rm.texi: Regenerate.
      
      From-SVN: r274666
      Bob Duff committed
    • [Ada] Einfo: update comments for E_Function and E_Procedure · c27a8bce
      2019-08-19  Gary Dismukes  <dismukes@adacore.com>
      
      gcc/ada/
      
      	* einfo.ads (E_Function, E_Procedure): Update comments to
      	reflect that Renamed_Entity is also used for nongeneric
      	subprograms.
      
      From-SVN: r274665
      Gary Dismukes committed
    • [Ada] Fix bogus compilation error with Elaborate_Body and -gnatN · 8fafa0b4
      This fixes a bogus compilation error when a unit with SPARK_Mode
      containing a pragma Elaborate_Body is with-ed by a generic unit
      containing an inlined subprogram, and front-end inlining is enabled.
      
      2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* sem_prag.adb (Is_Before_First_Decl): Deal with rewritten
      	pragmas.
      
      gcc/testsuite/
      
      	* gnat.dg/elab8.adb, gnat.dg/elab8_gen.adb,
      	gnat.dg/elab8_gen.ads, gnat.dg/elab8_pkg.adb,
      	gnat.dg/elab8_pkg.ads: New testcase.
      
      From-SVN: r274664
      Eric Botcazou committed
    • [Ada] Suppress warnings on unreferenced parameters of dispatching ops · bfa6962f
      If the -gnatwf switch is used to activate warnings on unreferenced
      formal parameters, the warning is no longer given if the subprogram is
      dispatching, because such warnings tend to be noise. It is quite common
      to have a parameter that is necessary just because the subprogram is
      overriding, or just because we need a controlling parameter for the
      dispatch.
      
      2019-08-19  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* sem_warn.adb (Warn_On_Unreferenced_Entity): Suppress warning
      	on formal parameters of dispatching operations.
      
      gcc/testsuite/
      
      	* gnat.dg/warn29.adb, gnat.dg/warn29.ads: New testcase.
      
      From-SVN: r274663
      Bob Duff committed
    • [Ada] Crash on object initialization that is call to expression function · fcef060c
      This patch fixes a compiler abort on an object declaration for a
      class-wide type whose expression is a call to an expression function
      that returns type extension.
      
      2019-08-19  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_res.adb (Resolve_Call): A call to an expression function
      	freezes when expander is active, unless the call appears within
      	the body of another expression function,
      
      gcc/testsuite/
      
      	* gnat.dg/expr_func9.adb: New testcase.
      
      From-SVN: r274662
      Ed Schonberg committed
    • [Ada] Conversion routines between GNAT.OS_Lib.OS_Time and long integer · c7022038
      The new routines convert back and forth between private type OS_Time and
      a long integer which can be used in package Ada.Calendar.Conversions
      routines to convert to Ada.Calendar.Time.
      
      2019-08-19  Dmitriy Anisimkov  <anisimko@adacore.com>
      
      gcc/ada/
      
      	* libgnat/s-os_lib.ads, libgnat/s-os_lib.adb (To_Ada, To_C): New
      	routines.
      
      From-SVN: r274661
      Dmitriy Anisimkov committed
    • [Ada] Incorrect code for -gnateV switch · 382b0e97
      This patch corrects the code generated by the -gnateV switch in the case
      of a private type whose full type is a modular type, removing spurious
      run-time failures.
      
      In addition, this corrects the initialization of exception occurrences
      in exception handlers to avoid leaving data uninitialized, which caused
      -gnateV to raise spurious errors.
      
      2019-08-19  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* exp_attr.adb (Attribute_Valid): Correct the handling of
      	private types where the full type is modular. System.Address is
      	an example. Otherwise, we convert uncheckedly to a signed type,
      	so we get an incorrect range 0 .. -1, for which all values will
      	fail.  The 'Valid attribute is illegal for such types, but we
      	generate such illegal attribute_references for 'Valid_Scalars,
      	and we generate 'Valid_Scalars when the -gnateV switch is used.
      	Rename Btyp --> PBtyp to avoid hiding the outer Btyp, which was
      	confusing.
      	* libgnat/a-except.adb: Set the Exception_Raised component.
      	Otherwise, we have incorrect reads of invalid data.
      
      gcc/testsuite/
      
      	* gnat.dg/valid_scalars2.adb: New testcase.
      
      From-SVN: r274660
      Bob Duff committed
    • [Ada] Import documentation from the RM for various runtime units · 27ebda19
      2019-08-19  Pierre-Marie de Rodat  <derodat@adacore.com>
      
      gcc/ada/
      
      	* libgnat/a-cgaaso.ads, libgnat/a-cgarso.ads,
      	libgnat/a-cogeso.ads, libgnat/a-contai.ads,
      	libgnat/a-locale.ads: Import documentation from the RM.
      
      From-SVN: r274659
      Pierre-Marie de Rodat committed
    • [Ada] Generate ada_target_properties · bd0feb3c
      Generate target-dependent info into a file named ada_target_properties.
      This information is used by tools for static analysis: they need to know
      the size of standard types for a given run-time library. This metadata
      is meant to be saved at the root of the run-time directory.
      
      2019-08-19  Jerome Guitton  <guitton@adacore.com>
      
      gcc/ada/
      
      	* Makefile.rtl (system.o): New target to add generation of
      	target properties.
      	* gcc-interface/Makefile.in (install-gnatlib): Install
      	ada_target_properties.
      
      From-SVN: r274658
      Jerome Guitton committed
    • [Ada] Lift restriction on instantiations that are compilation units · 6c87c83b
      This change lifts the restriction that was still present in the new
      on-demand instantiation scheme for the body of generics instantiated in
      non-main units.
      
      The instantiations that are compilation units were still dealt with in
      the old-fashioned way, that is to say the decision of instantiating the
      body was still made up front during the analysis of the instance
      declaration, instead of being deferred until after a call to an inlined
      subprogram is encountered.
      
      This should save a few more cycles when full inlining across units is
      enabled, but there should otherwise be no functional changes.
      
      2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* inline.adb (Add_Inlined_Body): Do not special-case instances
      	that are compilation units.
      	(Add_Pending_Instantiation): Likewise.
      	(Instantiate_Body): Skip instantiations that are compilation
      	units and have already been performed.
      	* sem_ch12.adb (Needs_Body_Instantiated): Do not special-case
      	instances that are compilation units.
      	(Load_Parent_Of_Generic): Be prepared for parent that is a
      	compilation unit but whose instantiation node has not been
      	replaced.
      
      gcc/testsuite/
      
      	* gnat.dg/generic_inst12.adb, gnat.dg/generic_inst12_pkg1.adb,
      	gnat.dg/generic_inst12_pkg1.ads,
      	gnat.dg/generic_inst12_pkg2.ads: New testcase.
      
      From-SVN: r274657
      Eric Botcazou committed
    • [Ada] Further cleanup in inlining machinery · 92b635e5
      This adds missing boilerplate stuff.  No functional changes.
      
      2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* inline.adb (Initialize, Lock): Deal with
      	Called_Pending_Instantiations.
      
      From-SVN: r274656
      Eric Botcazou committed
    • [Ada] Legality of protected subp. implementing interface operations · 432c8cdd
      This patch refines the predicate that implements rule in RM 9.4 (11.9/2)
      
      Compiling b94.ads must yield:
      
         b94.ads:11:17: illegal overriding of subprogram inherited from interface
         b94.ads:11:17: first formal of "N" declared at line 8 must be of mode
           "out", "in out" or access-to-variable
      
      ----
      package B94 is
      
         type Prot2_Int is protected interface;
         procedure  J (PI : in     Prot2_Int; N : in Integer)  is null;
         procedure  K (PI : in out Prot2_Int; N : in Integer)  is null;
         procedure  L (PI :    out Prot2_Int; N : in Integer)  is null;
         procedure  M (PI : access Prot2_Int; N : in Integer)  is null;
         procedure  N (PI : access constant Prot2_Int; N : in Integer)  is null;
      
         protected type Protected_2 is new Prot2_Int with
            procedure N (N : in Integer);                   -- ERROR: {7;1}
         end Protected_2;
      
      end B94;
      
      2019-08-19  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_ch6.adb (Check_Synchronized_Overriding): Complete
      	predicate that applies legality check in 9.4 (11.9/2): if an
      	inherited subprogram is implemented by a protected procedure or
      	entry, its first paarameter must be out, in_out or
      	access_to_varible.
      
      From-SVN: r274655
      Ed Schonberg committed
    • [Ada] Buffer reading overflow in dispatch table initialization · bd5ed03a
      For tagged types not defined at library level that derive from library
      level tagged types the compiler may generate code to initialize their
      dispatch table of predefined primitives copying from the parent type
      data stored in memory after the dispatch table of the parent; that is,
      at runtime the initialization of dispatch tables overflows reading the
      parent dispatch table.
      
      This problem does not affect the execution of the program since the
      target dispatch table always has enough space to store the extra data,
      and after such copy the compiler generates code to complete the
      initialization of the dispatch table.
      
      The following test must compile and execute without errors.
      
      package pkg_a is
         type Root is tagged null record;
      end pkg_a;
      
      with pkg_a;
      procedure main is
         type Derived is new pkg_a.Root with null record;  -- Test
      begin
         null;
      end main;
      
      Command: gnatmake -q main -fsanitize=address; ./main
      
      2019-08-19  Javier Miranda  <miranda@adacore.com>
      
      gcc/ada/
      
      	PR ada/65696
      	* exp_atag.ads, exp_atag.adb (Build_Inherit_Predefined_Prims):
      	Adding formal to specify how many predefined primitives are
      	inherited from the parent type.
      	* exp_disp.adb (Number_Of_Predefined_Prims): New subprogram.
      	(Make_Secondary_DT): Compute the number of predefined primitives
      	of all tagged types (including tagged types not defined at
      	library level).  Previously we unconditionally relied on the
      	Max_Predef_Prims constant value when building the dispatch
      	tables of tagged types not defined at library level (thus
      	consuming more memory for their dispatch tables than required).
      	(Make_DT): Compute the number of predefined primitives that must
      	be inherited from their parent type when building the dispatch
      	tables of tagged types not defined at library level. Previously
      	we unconditionally relied on the Max_Predef_Prims constant value
      	when building the dispatch tables of tagged types not defined at
      	library level (thus copying more data than required from the
      	parent type).
      
      From-SVN: r274654
      Javier Miranda committed
    • [Ada] Process type extensions for -gnatw.h · d403cfad
      This patch enables gap detection in type extensions.
      
      With the -gnatw.h switch, on 64-bit machines,
      the following test should get warnings:
      
      gcc -c gaps.ads -gnatw.h
      gaps.ads:16:07: warning: 48-bit gap before component "Comp2"
      gaps.ads:17:07: warning: 8-bit gap before component "Comp3"
      
      package Gaps is
         type Integer_16 is mod 2**16;
      
         type TestGap is tagged record
            Comp1 : Integer_16;
         end record;
         for TestGap use record
            Comp1 at 0 + 8 range 0..15;
         end record;
      
         type TestGap2 is new TestGap with record
            Comp2  : Integer_16;
            Comp3  : Integer_16;
         end record;
         for TestGap2 use record
            Comp2 at 08 + 8 range 0..15;
            Comp3 at 11 + 8 range 0..15;
         end record;
      
      end Gaps;
      
      2019-08-19  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* sem_ch13.adb (Record_Hole_Check): Procedure to check for holes
      	that incudes processing type extensions. A type extension is
      	processed by first calling Record_Hole_Check recursively on the
      	parent type to compute the bit number after the last component
      	of the parent.
      
      From-SVN: r274653
      Bob Duff committed
    • [Ada] Improve warnings about "too few elements" and "too many elements" · eb6b9c9b
      When warning about length-check failures detected at compile time that
      are flagged with "too few elements" or "too many elements", the compiler
      now gives an additional message indicating the number of elements
      expected by the context versus how many are present in the conflicting
      expression (such as an aggregate that has too few or too many
      components).
      
      The test below reports the following warnings when compiled with this command:
      
      $ gcc -c -gnatj78 length_warnings.adb
      
      length_warnings.adb:6:09: warning: too few elements for subtype of
                                "Boolean_Array" defined at line 5, expected 10
                                elements; found 9 elements, "Constraint_Error" will
                                be raised at run time
      length_warnings.adb:10:09: warning: too few elements for subtype of
                                 "Boolean_Array" defined at line 9, expected 2
                                 elements; found 1 element, "Constraint_Error" will
                                 be raised at run time
      length_warnings.adb:14:09: warning: too many elements for subtype of
                                 "Boolean_Array" defined at line 13, expected 10
                                 elements; found 11 elements, "Constraint_Error"
                                 will be raised at run time
      length_warnings.adb:18:09: warning: too many elements for subtype of
                                 "Boolean_Array" defined at line 17, expected 0
                                 elements; found 1 element, "Constraint_Error" will
                                 be raised at run time
      length_warnings.adb:22:09: warning: too many elements for subtype of
                                 "Boolean_Array" defined at line 21, expected 1
                                 element; found 2 elements, "Constraint_Error" will
                                 be raised at run time
      
      procedure Length_Check_Warnings is
      
         type Boolean_Array is array (Natural range <>) of Boolean;
      
         Bits_A : Boolean_Array (1 .. 10)
           := (True, True, True, True, True, True, True, True, True);
         -- Too few elements
      
         Bits_B : Boolean_Array (1 .. 2)
           := (1 => False);
         -- Too few elements
      
         Bits_C : Boolean_Array (1 .. 10)
           := (True, True, True, True, True, True, True, True, True, True, True);
         -- Too many elements
      
         Bits_D : Boolean_Array (1 .. 0)
           := (1 => True);
         -- Too many elements
      
         Bits_E : Boolean_Array (1 .. 1)
           := (True, False);
         -- Too many elements
      
      begin
         null;
      end Length_Check_Warnings;
      
      2019-08-19  Gary Dismukes  <dismukes@adacore.com>
      
      gcc/ada/
      
      	* checks.adb (Length_Mismatch_Info_Message): New function in
      	Selected_Length_Checks to return a message indicating the
      	element counts for the mismatched lengths for a failed
      	compile-time length check.
      	(Plural_Or_Singular_Ending): Support function in
      	Length_Mismatch_Info_Message to return either "" or "s", for
      	concatenating to the end of words.
      	(Selected_Length_Checks): Pass the result of
      	Length_Mismatch_Info_Message as an extra warning message to
      	Compile_Time_Constraint_Error to indicate the mismatched lengths
      	for a failed compile-time length check.
      	* sem_util.ads (Compile_Time_Constraint_Error): Add an optional
      	message formal (Extra_Msg), defaulted to the empty string.
      	* sem_util.adb (Compile_Time_Constraint_Error): Output an extra
      	message following the main warning message (when Extra_Msg is
      	not the empty string).
      
      From-SVN: r274652
      Gary Dismukes committed
    • [Ada] Enable use of GNAT.Sockets for VxWorks RTP · 593e0eba
      The recent introduction of GNAT.Sockets IPv6 support broke support for
      VxWorks RTPs due to the use of internal VxWorks kernel calls. This patch
      rectifies this by using the VxWorks public API for these routines.
      
      The following RTP should compile successfully on a Development profile
      VxWorks kernel that includes the INCLUDE_GETNAMEINFO component:
      
      with GNAT.Sockets;      use GNAT.Sockets;
      
      procedure IPvX is
         procedure Print_Address_Info
           (Host, Serv   : String;
            Family       : Family_Type := Family_Unspec)
         is
            Addresses : Address_Info_Array :=
              Get_Address_Info
                (Host, Serv, Family,
                 Passive      => False,
                 Numeric_Host => False);
         begin
            Sort (Addresses, IPv6_TCP_Preferred'Access);
         end Print_Address_Info;
      
      begin
         Print_Address_Info ("localhost", "ssh");
      end IPvX;
      
      2019-08-19  Patrick Bernardi  <bernardi@adacore.com>
      
      gcc/ada/
      
      	* socket.c: Removed the redefinition of getaddrinfo, getnameinfo
      	and freeaddrinfo to internal VxWorks kernel calls because they
      	are, well, internal kernel calls and cannot be called from RTPs.
      	VxWorks provides the necessary components to call these routines
      	directly.
      
      From-SVN: r274651
      Patrick Bernardi committed
    • [Ada] Fix incorrect stub generation for types in instances · 1f5c7ba8
      This fixes a fallout of a recent change clearing the
      Is_Generic_Actual_Type on the implicit full view of a private actual
      type in an instance.  This flag is used to help disambiguating formal
      types instantiated on the same actual type within an instance, but it
      should be cleared outside the instance to let the usual disambiguation
      rules apply again to these types outside the instance.
      
      This in particular means that Exp_Dist cannot rely on it to detect
      subtypes representing generic actual types, hence the need for the new
      predicate.
      
      2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* exp_dist.adb (Is_Generic_Actual_Subtype): New predicate.
      	(Build_From_Any_Call, Build_To_Any_Call, Build_TypeCode_Call):
      	Use it instead of Is_Generic_Actual_Type flag to detect subtypes
      	representing generic actual types.
      
      From-SVN: r274650
      Eric Botcazou committed
    • [Ada] Improve placement of warning on formals of generic subprograms · 4527ea2e
      This patch modifies the handling of warnings on unused formal parameters
      of generic subprograms. Previously such warnings were placed on the
      formal appearing in the subprogram declaration, in contrast with
      warnings on non-generic subprograms, where the warning is placed on the
      corresponding entity in the body of the subprogram. This patch makes the
      handling of both cases uniform. It is preferable to place the warning in
      the body because this also provides a better suggestion for the
      placement of an Unreferenced pragma to suppress the warning when desired.
      
      2019-08-19  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_warn.adb (Check_References, Generic_Body_Formal): When a
      	formal parameter of a generic subprogram is not referenced in
      	the body, place the corresponding warning on the corresponding
      	entity in the specification of the generic body, as is done for
      	non-generic subprograms.
      
      gcc/testsuite/
      
      	* gnat.dg/warn28.adb, gnat.dg/warn28.ads: New testcase.
      
      From-SVN: r274649
      Ed Schonberg committed
    • [Ada] Factor out the "size for& too small..." error message · dafa2ae4
      Use a constant for the Size_Too_Small_Message, so if it changes, it
      won't change in one place but not another.  DRY. It might be better to
      move this code out of errout.adb, but that's for another day.
      
      2019-08-19  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* errout.ads (Size_Too_Small_Message): New constant.
      	* errout.adb, freeze.adb, sem_ch13.adb: Use it.
      
      From-SVN: r274648
      Bob Duff committed
    • [Ada] Fix internal error on subprogram instantiation with -gnatzc · 27b2fbc9
      This fixes a fallout of the recent change keeping the
      Is_Generic_Instance flag on the wrapper package built for the
      instantiation of a generic subprogram.
      
      There is no need to visit the Instance_Spec of an
      N_Subprogram_Instantiation node anymore because the regular processing
      for an N_Package_Declaration node now does the job for instantiations of
      generic subprograms.
      
      The following subprogram must compile again quietly with -gnatzc:
      
      with Gen_Proc;
      
      package RCI is
         pragma Remote_Call_Interface;
      
         procedure Inst_Proc is new Gen_Proc;
      
         procedure P (S : String);
      end RCI;
      
      generic
      procedure Gen_Proc (S : String);
      pragma Remote_Call_Interface (Gen_Proc);
      
      with Ada.Text_IO; use Ada.Text_IO;
      procedure Gen_Proc (S : String) is
      begin
         Put_Line ("Gen_Proc called: " & S);
      end Gen_Proc;
      
      2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* exp_dist.adb (Build_Package_Stubs): Do not specifically visit
      	the declarations of an N_Subprogram_Instantiation node.
      
      From-SVN: r274647
      Eric Botcazou committed
    • [Ada] Document missing gnatmetric switches · d41f5c1f
      2019-08-19  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_ugn/gnat_utility_programs.rst: Document missing
      	metrics switches.
      
      From-SVN: r274646
      Bob Duff committed
    • [Ada] Minor refactorings · 086734ae
      2019-08-19  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* sem_ch12.adb (Get_Unit_Instantiation_Node): Simplify Nkind_In
      	membership test.
      	* sem.adb (Depends_On_Main): Whitespace cleanup; only assign a
      	local variable if needed.
      
      From-SVN: r274645
      Piotr Trojanek committed
    • [Ada] Allow reading a borrowed object inside a call to a pledge function · ef1c6c0e
      No impact on regular compilation.
      
      2019-08-19  Claire Dross  <dross@adacore.com>
      
      gcc/ada/
      
      	* sem_spark.ads, sem_spark.adb (Is_Pledge_Function): New
      	parameter of the generic. Function used to decide whether a
      	function is a pledge function.
      	(Check_Not_Borrowed): Disable check inside the second parameter
      	of a pledge function for the path borrowed by the first
      	parameter. Also disable checks for entities inside a Global
      	contract.
      
      From-SVN: r274644
      Claire Dross committed
    • [Ada] Add formal function parameter equality to SPARK containers · 123f0215
      This patch adds a formal function parameter "=" (L, R : Element_Type) to
      SPARK containers. The equality that is used by default for Element_Type
      after this patch is the primitive equality and not the predefined any
      more. It also allows to use any function with the appropriate signature
      for the equality function.
      
      2019-08-19  Joffrey Huguet  <huguet@adacore.com>
      
      gcc/ada/
      
      	* libgnat/a-cfdlli.ads, libgnat/a-cfhama.ads,
      	libgnat/a-cfinve.ads, libgnat/a-cforma.ads,
      	libgnat/a-cofove.ads, libgnat/a-cofuma.ads,
      	libgnat/a-cofuve.ads: Add formal function parameter "=" (L, R :
      	Element_Type) to the generic packages.
      
      From-SVN: r274643
      Joffrey Huguet committed
    • [Ada] Opt: clean up left-overs of earlier implementation in comment · b1d7f6fe
      2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* opt.ads: Clean up left-overs of earlier implementation in
      	comment:
      
      From-SVN: r274642
      Eric Botcazou committed
    • [Ada] Representation clause for derived enumeration type is mishandled · d9ef7b97
      This patch fixes an old-standing problem with premature freezing. When a
      derived type declaration includes a constraint, we generate a subtype
      declaration of an anonymous base type, with the constraint given in the
      original type declaration, Conceptually, the bounds are converted to the
      new base type, and this conversion freezes (prematurely) that base type,
      when the bounds are simply literals.  As a result, a representation
      clause for the derived type is then rejected or ignared. This procedure
      recognizes the simple case of literal bounds in derived enumeration type
      declarations, which allows us to indicate that the conversions are not
      freeze points, and the subsequent representation clause can be accepted.
      
      2019-08-19  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_ch3.adb (Derived_Enumeration_Type): Do no freeze anonymous
      	base type if the bounds in the derived type declaration are
      	literals of the type.
      
      gcc/testsuite/
      
      	* gnat.dg/rep_clause9.adb: New testcase.
      
      From-SVN: r274641
      Ed Schonberg committed
    • [Ada] Do not skip non-aliasing checking when inlining in GNATprove · c811dd91
      When code is inlinined for proof in the special mode for GNATprove, Ada
      rules about non-aliasing should still be checked. Now fixed.
      
      There is no impact on compilation.
      
      2019-08-19  Yannick Moy  <moy@adacore.com>
      
      gcc/ada/
      
      	* sem_res.adb (Resolve_Call): Check non-aliasing rules before
      	GNATprove inlining.
      
      From-SVN: r274640
      Yannick Moy committed
    • [Ada] Further cleanup in inlining machinery · a4bbe10d
      This gets rid of a small issue in the inlining machinery: under very
      peculiar circumstances, it would add a pending instantiation for the
      body of a generic package at the point of call to an inlined subprogram
      of the instance.  That's theoritically problematic because the saved
      context is that of the call and not that of the instance in this case,
      although the strict conditions ensure that this doesn't make a real
      difference in practice.
      
      Now that the machinery can perform the pending instantiations on demand,
      we can optimistically add more of them when the instantiations are
      analyzed and thus remove the problematic handling at the point of call.
      
      No functional changes.
      
      2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* inline.adb (Add_Inlined_Body): Do not add pending
      	instantiations.
      	* sem_ch12.adb (Needs_Body_Instantiated): New predicate.
      	(Analyze_Package_Instantiation): Use it to decide whether to add
      	a pending instantiation for the body of the package.
      
      From-SVN: r274639
      Eric Botcazou committed
    • [Ada] Fix thinko in Acc_Loop_to_gnu · 04d933fd
      This fixes a glitch introduced during the initial OpenACC work import
      process, causing crashes on any Acc_Parallel + Acc_Loop combination.
      
      2019-08-19  Olivier Hainque  <hainque@adacore.com>
      
      gcc/ada/
      
      	* gcc-interface/trans.c (Acc_Loop_to_gnu): Return the openacc
      	BIND_EXPR node we have constructed on purpose.  Remove unused
      	variable.
      
      gcc/testsuite/
      
      	* gnat.dg/openacc1.adb: New testcase.
      
      From-SVN: r274638
      Olivier Hainque committed
    • [Ada] Define the -fdump-scos option in lang.opt · c9d57552
      2019-08-19  Pierre-Marie de Rodat  <derodat@adacore.com>
      
      gcc/ada/
      
      	* gcc-interface/lang.opt (fdump-scos): Define.
      	* gcc-interface/misc.c (gnat_handle_option): Handle
      	OPT_fdump_scos.
      
      From-SVN: r274637
      Pierre-Marie de Rodat committed
    • PR target/91441 - Turn off -fsanitize=kernel-address if… · 6490e255
      PR target/91441 - Turn off -fsanitize=kernel-address if TARGET_ASAN_SHADOW_OFFSET is not implemented.
      
       - -fsanitize=kernel-address will call targetm.asan_shadow_offset ()
         at asan_shadow_offset, so it will crash if TARGET_ASAN_SHADOW_OFFSET
         is not implemented, that's mean -fsanitize=kernel-address is not
         supported for target without TARGET_ASAN_SHADOW_OFFSET implementation.
      
      gcc/ChangeLog:
      
      	PR target/91441
      	* toplev.c (process_options): Check TARGET_ASAN_SHADOW_OFFSET is
      	implemented for -fsanitize=kernel-address, and merge check logic
      	with -fsanitize=address.
      
      testsuite/ChangeLog:
      
      	PR target/91441
      	* gcc.target/riscv/pr91441.c: New.
      
      From-SVN: r274631
      Kito Cheng committed
    • re PR fortran/91485 (Erroneous conflict between variable x and operator(.x.)) · 88898d1e
      2019-08-18  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/91485
      	module.c (gfc_match_use): User defined operator cannot conflict with
      	a rename symbol.
      
      2019-08-18  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/91485
      	* gfortran.dg/pr91485.f90: New test.
      
      From-SVN: r274630
      Steven G. Kargl committed
    • Daily bump. · e00f8658
      From-SVN: r274629
      GCC Administrator committed
  2. 18 Aug, 2019 4 commits