1. 08 Jul, 2019 34 commits
    • [Ada] GNAT RM: Update documentation on No_Exceptions restriction · aec80f20
      2019-07-08  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
      	Update documentation on No_Exceptions restriction.
      	* gnat_rm.texi: Regenerate.
      
      From-SVN: r273224
      Arnaud Charlet committed
    • [Ada] Os_Lib: do not call __gnat_kill for Invalid_Pid · 3a4a60d1
      2019-07-08  Dmitriy Anisimkov  <anisimko@adacore.com>
      
      gcc/ada/
      
      	* libgnat/s-os_lib.adb: Do not call __gnat_kill for Invalid_Pid.
      
      From-SVN: r273223
      Dmitriy Anisimkov committed
    • [Ada] Remove dead code from Enclosing_Package_Or_Subprogram routine · 4fe5bbcf
      Calls to Scope always return unique entities, i.e. package/subprogram
      and not their bodies, so there is no need to expect them.
      
      Cleanup only; semantics unaffected. (This routine was only used in CCG
      and GNATprove backends anyway.)
      
      2019-07-08  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* sem_util.adb (Enclosing_Package_Or_Subprogram): Do not expect
      	package and subprogram bodies.
      
      From-SVN: r273222
      Piotr Trojanek committed
    • [Ada] Remove documentation of ignored GNATpp switch · b7234265
      2019-07-08  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_ugn/gnat_utility_programs.rst: Remove documentation
      	of ignored GNATpp switch.
      
      From-SVN: r273221
      Bob Duff committed
    • [Ada] In-place initialization for Initialize_Scalars · 156187ef
      Update the documentation of pragma Initialize_Scalars in the GNAT
      Reference Manual.
      
      2019-07-08  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_rm/implementation_defined_pragmas.rst:
      	Update the documentation of pragma Initialize_Scalars.
      	* gnat_rm.texi: Regenerate.
      
      From-SVN: r273220
      Hristian Kirtchev committed
    • [Ada] Wrong evaluation of membership test · fa2538c7
      The code generated by the compiler erroneously evaluates to True
      membership tests when their left operand is a a class-wide interface
      object and the right operand is a tagged type that implements such
      interface type.
      
      2019-07-08  Javier Miranda  <miranda@adacore.com>
      
      gcc/ada/
      
      	* exp_ch4.adb (Tagged_Membership): Fix regression silently
      	introduced in r260738 that erroneouslusy causes the evaluation
      	to True of the membership test when the left operand of the
      	membership test is a class-wide interface object and the right
      	operand is a type that implements such interface type.
      
      gcc/testsuite/
      
      	* gnat.dg/interface10.adb: New testcase.
      
      From-SVN: r273219
      Javier Miranda committed
    • [Ada] Assertion failure on validity check for Address · 570d5bbc
      This patch corrects the verification of 'Address clauses to avoid
      processing a clause where the prefix of the attribute is a generic
      formal object.
      
      2019-07-08  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not
      	register an address clause when its prefix denotes a generic
      	formal object.
      
      gcc/testsuite/
      
      	* gnat.dg/addr13.adb, gnat.dg/addr13.ads: New testcase.
      
      From-SVN: r273218
      Hristian Kirtchev committed
    • [Ada] Diagnostics for Elaboration order v4.0 · 47bcd81f
      This patch adds a missing case to the output of cycle diagnostics here a
      transition from an Elaborate_Body pair may reach a destination which is
      in the context of an active Elaborate_All.
      
      2019-07-08  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* bindo-diagnostics.adb (Diagnose_Cycle): Capture the presence
      	of an Elaborate_All edge before iterating over the edges of the
      	cycle.
      	(Output_Elaborate_Body_Transition): Update the parameter profile
      	and the comment on usage. Add a missing case where the edge is
      	within the context of an Elaborate_All.
      	(Output_Transition): Update the call to
      	Output_Elaborate_Body_Transition.
      	* bindo-graphs.ads, bindo-graphs.adb
      	(Contains_Elaborate_All_Edge): New routine.
      
      From-SVN: r273217
      Hristian Kirtchev committed
    • [Ada] Set dummy Etype for the fake __HEAP entity in GNATprove · 56730418
      GNATprove represents reads and writes via pointers as operations on a
      fake __HEAP entity. This entity already had various properties set to
      dummy values (e.g. Scope set to Standard_Standard), so that it can be
      processed like other entities without crashing and not special-cased
      everywhere. Now it also has a dummy Etype, so it can be processed with
      Is_Single_Concurrent_Object.
      
      The modified code is only executed by GNATprove; frontend is not
      affected.
      
      2019-07-08  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* lib-xref-spark_specific.adb (Create_Heap): Set dummy Etype for
      	the fake __HEAP entity.
      
      From-SVN: r273216
      Piotr Trojanek committed
    • [Ada] Suppress warnings on memory representation in CodePeer mode · f6d606c7
      2019-07-08  Daniel Mercier  <mercier@adacore.com>
      
      gcc/ada/
      
      	* gnat1drv.adb: Suppress warnings on memory representation in
      	CodePeer compiler mode.
      
      From-SVN: r273215
      Daniel Mercier committed
    • [Ada] Remove dependency on Win32 GDI (Graphical Interface) · 900dd840
      CommandLineToArgvW drags a dependency on SHELL32.DLL and thus GDI32.DLL.
      By loading GDI32.DLL some default GDI objects are allocated. On some
      Windows versions this cause the use of a lock on the graphical interface
      during process termination. This can impact parallelism significantly as
      termination of processes is serialized.
      
      2019-07-08  Nicolas Roche  <roche@adacore.com>
      
      gcc/ada/
      
      	* rtinit.c (__gnat_runtime_initialize): Remove dependency on
      	CommandLineToArgvW.
      
      From-SVN: r273214
      Nicolas Roche committed
    • [Ada] New port for x86_64-vx7 · eaec429d
      2019-07-08  Doug Rupp  <rupp@adacore.com>
      
      gcc/ada/
      
      	* Makefile.rtl: Handle vxworks7r2 in x86_64 and x86 vxworks7.
      
      From-SVN: r273213
      Doug Rupp committed
    • [Ada] Use g-sercom__linux.adb for all Linuxes · 589721af
      2019-07-08  Dmitriy Anisimkov  <anisimko@adacore.com>
      
      gcc/ada/
      
      	* Makefile.rtl: Use g-sercom__linux.adb for all linuxes.
      
      From-SVN: r273212
      Dmitriy Anisimkov committed
    • [Ada] Do not erase precise type on fixed-point real literal · 7800a8fb
      Real literals of fixed-point type are expected to keep their precise
      fixed-point type in GNATprove. This is now correctly enforced.
      
      There is no impact on compilation.
      
      2019-07-08  Yannick Moy  <moy@adacore.com>
      
      gcc/ada/
      
      	* expander.adb (Expand): Do not reset Analyzed flag always.
      	* sem_eval.adb (Fold_Ureal): Mark node as analyzed.
      
      From-SVN: r273211
      Yannick Moy committed
    • [Ada] Crash on timed entry call with a delay given by a type conversion · 1bb2e1d9
      This patch fixes a compiler crash in the compiler on a timed entry call
      whose delay expression is a type conversion, when FLoat_Overflow checks
      are enabled.
      
      2019-07-08  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_ch9.adb (Expand_N_Timed_Entry_Call): Do not insert twice
      	the assignment statement that computes the delay value, to
      	prevent improper tree sharing when the value is a type
      	conversion and Float_Overflow checks are enabled.
      
      gcc/testsuite/
      
      	* gnat.dg/entry1.adb, gnat.dg/entry1.ads: New testcase.
      
      From-SVN: r273210
      Ed Schonberg committed
    • [Ada] New algorithm for Elaboration order v4.0 · 92c7734d
      This patch introduces several changes to the new elaboration order
      mechanism:
      
         * The concept of "strong" and "weak" edges is introduced. Strong
           edges are the byproduct of language-defined relations between
           units, such as with clauses. Weak edges are the byproduct of
           specilative invocations at elaboration time, which may or may not
           take place depending on control flow.
      
         * The elaboration order algorithm has been heavily modified to make
           use of the strong and weak edges, and operate on units compiled
           with different elaboration models.
      
         * The elaboration order algorithm employs the following logic:
      
              - Maintain two sets of vertices, one for all elaborable
                vertices, and one for all waiting vertices.
      
              - Pick the best elaborable vertex, and elaborate its component.
      
              - If no such elaborable vertex is available, pick the best
                weakly elaborable vertex whose unit has been compiled with the
                dynamic model, and elaborate its component.
      
              - If no such weakly elaborable vertex is available, then either
                all vertices were already elaborated, or the graph contains a
                cycle.
      
           The elaboration of a component employs the same logic, with an
           added step where all successors of some predecessor currently being
           elaborated are notified that they have one fewer predecessor to
           wait on. This may cause certain successors to become elaborable, in
           which case they are moved from the set of waiting vertices to the
           set of elaborable vertices.
      
         * Three new GNATbind debug switches are introduced, -d_a, -d_b, and
           -d_e, to eliminate the effects of pragmas Elaborate_All,
           Elaborate_Body, and Elaborate respectively.
      
         * The section on terminology is updated to include new entries.
      
      2019-07-08  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* bindo.adb: Update the section on terminology to include new
      	concepts.  Update the section on switches to include new
      	entries.
      	* bindo.ads: Add type Precedence_Kind.
      	* bindo-builders.adb: Add with and use clauses for Debug and
      	Bindo.Validators.  Add use clauses for
      	Bindo.Validators.Invocation_Graph_Validators and
      	Bindo.Validators.Library_Graph_Validators.
      	(Build_Invocation_Graph): Validate the graph immediately after
      	it was built.
      	(Build_Library_Graph): Update the parameter profile. The
      	creation of the graph is now elaboration model-agnostic.
      	Validate the graph immediately after it was built.
      	(Create_With_Edge): Create regular with edges for Elaborate and
      	Elaborate_All edges when the appropriate debug switches are in
      	effect.
      	* bindo-builders.ads (Build_Library_Graph): Update the parameter
      	profile.
      	* bindo-diagnostics.adb (Diagnose_Cycle): Track the presence of
      	an Elaborate_All edge throughout the inspection of the cycle's
      	edges.
      	(Output_Dynamic_Model_Suggestions): Output the suggestion only
      	when the cycle contains at least one weak edge where the
      	successor was statically elaborated.
      	(Output_Elaborate_Body_Transition, Output_Forced_Transition,
      	Output_With_Transition): Update the assertions.
      	* bindo-elaborators.adb: Remove use clauses for
      	Bindo.Validators.Invocation_Graph_Validators and
      	Bindo.Validators.Library_Graph_Validators.  Remove strings
      	Add_To_All_Candidates_Msg and Add_To_Comp_Candidates_Msg.
      	Remove type String_Ptr.
      	(Add_Vertex, Add_Vertex_If_Elaborable, Create_All_Candidates_Set
      	Create_Component_Candidates_Set): Remove.
      	(Create_Component_Vertex_Sets, Create_Vertex_Sets): New routine.
      	(Elaborate_Component): Update the parameter profile and the
      	comment on usage.  Reimplement the elaboration of a component.
      	The algorithm will now attempt to elaborate as many vertices
      	possible. If this is not possible, and a weakly elaborable
      	vertex is available use unit was compiled using the dynamic
      	model, the algorithm will elaborate it.
      	(Elaborate_Library_Graph): Reimplement the elaboration of the
      	graph. The algorithm will now attempt to elaborate as many
      	vertices along with their components as possible. If this is not
      	possible, and a weakly elaborable vertex is available use unit
      	was compiled using the dynamic model, the algorithm will
      	elaborate it along with its component.
      	(Elaborate_Units): Merge with the functionality of
      	Elaborate_Units_Common.
      	(Elaborate_Units_Common, Elaborate_Units_Dynamic,
      	Elaborate_Units_Static): Remove.
      	(Elaborate_Vertex): Update the parameter profile and the comment
      	on usage.  Reimplemented.
      	(Find_Best_Candidate): Remove.
      	(Find_Best_Elaborable_Vertex, Find_Best_Vertex,
      	Find_Best_Weakly_Elaborable_Vertex, Has_Elaborable_Body,
      	Insert_Elaborable_Successor, Insert_Vertex): New routines.
      	(Is_Better_Candidate): Remove.
      	(Is_Better_Elaborable_Vertex,
      	Is_Better_Weakly_Elaborable_Vertex,
      	Is_Suitable_Elaborable_Vertex,
      	Is_Suitable_Weakly_Elaborable_Vertex): New routines.
      	(Trace_Candidate_Vertices): Remove.
      	(Trace_Component): Output the number of strong and weak
      	predecessors.
      	(Trace_Unelaborated_Vertices): Remove.
      	(Trace_Vertex): Output the number of strong and weak
      	predecessors.
      	(Trace_Vertices): New routine.
      	(Update_Successor, Update_Successors): Update the parameter
      	profile and the comment on usage.
      	* bindo-graphs.adb: Remove type Precedence_Kind.
      	(Add_Edge_With_Return): Update the increment of pending
      	predecessors.
      	(Add_Vertex): Provide default values for strong and weak
      	predecessors.
      	(Complementary_Vertex): Move the initial declaration to the
      	spec. Update the parameter profile and the comment on usage.
      	(Contains_Weak_Static_Successor): New routine.
      	(Create): Update the parameter profile. The creation of the
      	graph is now elaboration model-agnostic.
      	(Decrement_Pending_Predecessors): Update the parameter profile
      	and the comment on usage. Reimplemented.
      	(Delete_Edge): Update the decrement of pending predecesors.
      	(Has_Elaborate_Body): Do not treat a vertex as being subject to
      	Elaborate_Body when a debug switch is in effect.
      	(Increment_Pending_Predecessors): Update the parameter profile
      	and the comment on usage. Reimplemented.
      	(Is_Elaborable_Component): Reimplemented.
      	(Is_Elaborable_Vertex): Move the initial declaration to the
      	spec.  Reimplemented.
      	(Is_Elaborate_Body_Pair): New routine.
      	(Is_Dynamically_Elaborated): Update the parameter profile.
      	Reimplemented.
      	(Is_Weakly_Elaborable_Vertex): New routine.
      	(Pending_Predecessors): Removed.
      	(Pending_Predecessors_For_Elaboration,
      	Pending_Strong_Predecessors, Pending_Weak_Predecessors,
      	Update_Pending_Predecessors): New routines.
      	(Update_Pending_Predecessors_Of_Components): Update the
      	increment of pending predecessors.
      	* bindo-graphs.ads: Update the components of type
      	Component_Attributes.  Update the components of type
      	Library_Graph_Attributes.  Update the components of type
      	Library_Graph_Vertex_Attributes.  Update the initialization of
      	No_Component_Attributes.  Update the initialization of
      	No_Library_Graph_Vertex_Attributes.
      	(Complementary_Vertex, Contains_Weak_Static_Successor): New
      	routines.
      	(Create): Update the parameter profile and the comment on usage.
      	(Decrement_Pending_Predecessors, Is_Dynamically_Elaborated):
      	Update the parameter profile and the comment on usage.
      	(Is_Elaborate_Body_Pair, Is_Weakly_Elaborable_Vertex): New
      	routines.
      	(Pending_Predecessors): Removed.
      	(Pending_Predecessors_For_Elaboration,
      	Pending_Strong_Predecessors, Pending_Weak_Predecessors): New
      	routines.
      	* bindo-writers.adb (Write_Components): Moved from the spec.
      	(Write_Component): Output the strong and weak predecessors.
      	(Write_Library_Graph): Output the components as part of the
      	graph.
      	(Write_Library_Graph_Vertex): Output the strong and weak
      	predecessors.
      	* bindo-writers.ads (Write_Components): Moved to the body.
      	* debug.adb: Add and document new GNATbind switches -d_a, -d_b,
      	-d_e.
      	* bindo-validators.adb: Minor reformattings.
      
      From-SVN: r273209
      Hristian Kirtchev committed
    • [Ada] More data rates supported on Linux · 79ee9e32
      This patch adds additional data rates to the GNAT.Serial_Communications
      package (Linux version).
      
      2019-07-08  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* libgnat/g-sercom.ads, libgnat/g-sercom__linux.adb (Data_Rate):
      	Support additional data rates.
      
      From-SVN: r273208
      Bob Duff committed
    • [Ada] Arrange not to set DECL_ARTIFICIAL on elab procs · 19d9ce46
      Unlike, say, clones created internally by the compiler, elab procs
      materialize specific user code and flagging them artificial now takes
      elab code away from gcov's analysis, a regression compared to previous
      releases.
      
      On the testcase below:
      
      package Gcov_Q is
         function F (X : Integer) return Integer is (X + 1);
      end;
      
      with Gcov_Q;
      package Gcov_P is
         Y : Integer := Gcov_Q.F (X => 1);
      end;
      
      with Gcov_P;
      procedure Gcov_Test is
      begin
         if Gcov_P.Y /= 2 then
            raise Program_Error;
         end if;
      end;
      
      After compiling with:
      
        gnatmake -f -g gcov_test.adb \
          -cargs -ftest-coverage -fprofile-arcs \
          -largs -fprofile-generate
      
      and executing with
      
        ./gcov_test
      
      We expect
      
         gcov gcov_p
      
      to produce a gcov_p.ads.gcov report.
      
      2019-07-08  Olivier Hainque  <hainque@adacore.com>
      
      gcc/ada/
      
      	* gcc-interface/trans.c (Compilation_Unit_to_gnu): Don't request
      	DECL_ARTIFICIAL_P on elab proc declarations.
      
      From-SVN: r273207
      Olivier Hainque committed
    • [Ada] Fix crash on extension of private type with -gnatRj · abbc4546
      This fixes a crash (or an assertion failure) during the processing done
      for -gnatRj on the declaration of an extension of a private type.
      Generally speaking, extension declarations are delicate in this context
      because the front-end does not duplicate the structure of the parent
      type, so the processing required to output the structural layout needs
      to go up to the declaration of the parent type, which may or may not be
      available or usable.
      
      The change also makes the processing more robust by falling back to the
      flat layout if the declaration of the parent type cannot be processed.
      
      2019-07-08  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* repinfo.adb (List_Record_Info): Declare Incomplete_Layout and
      	Not_In_Extended_Main local exceptions.
      	(List_Structural_Record_Layout): For an extension, raise the
      	former if the parent subtype has not been built and the latter
      	if it is not declared in the main source unit.  Fall back to the
      	flat layout if either exception has been raised.
      
      From-SVN: r273206
      Eric Botcazou committed
    • [Ada] Semantics of Delete for fixed strings · 4962dc44
      This patch corrects a bug in the implementation of Delete in an unusual
      boundary case: the RM describes the semantics of Delete as equivalent to
      that of Replace_String with a null argument. As a result, deleting a
      null string that starts past the end of its argument is a noop and must
      not raise Index_Error.
      
      2019-07-08  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* libgnat/a-strfix.adb (Delete): The RM describes the semantics
      	of Delete as equivalent to that of Replace_String with a null
      	argument. As a result, deleting a null string that starts past
      	the end of its argument is a noop and must not raise
      	Index_Error.
      
      gcc/testsuite/
      
      	* gnat.dg/fixed_delete.adb: New testcase.
      
      From-SVN: r273205
      Ed Schonberg committed
    • [Ada] Crash in interface derivation with null primitive · 4a0e6ac1
      The frontend crashes processing the derivation of a tagged type whose
      ultimate ancestor is an interface type I1 that has a null primitive,
      implements another interface I2 derived from I2, and does not override
      the null primitive.
      
      2019-07-08  Javier Miranda  <miranda@adacore.com>
      
      gcc/ada/
      
      	* exp_disp.adb (Register_Primitive): When registering a
      	primitive in the secondary dispatch table, handle primitive
      	inherited through several levels of type derivation (required to
      	properly handle inherited 'null' primitive).
      
      gcc/testsuite/
      
      	* gnat.dg/interface9.adb, gnat.dg/interface9_root-child.ads,
      	gnat.dg/interface9_root.ads: New testcase.
      
      From-SVN: r273204
      Javier Miranda committed
    • [Ada] Document handling of preprocessor directives in GNATpp · 23eb3cb2
      2019-07-08  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_ugn/gnat_utility_programs.rst: Document handling of
      	preprocessor directives in GNATpp.
      
      From-SVN: r273203
      Bob Duff committed
    • [Ada] Code reorganization · f56e04e8
      This patch performs a code reorganization of the implementation of
      pragma Compile_Time_Error. No functional change.
      
      No test required.
      
      2019-07-08  Javier Miranda  <miranda@adacore.com>
      
      gcc/ada/
      
      	* gnat1drv.adb (Post_Compilation_Validation_Checks:
      	Validate_Compile_Time_Warning_Errors is now located in sem_prag
      	(instead of sem_ch13).
      	* sem_ch13.ads (Validate_Compile_Time_Warning_Error,
      	Validate_Compile_Time_Warning_Errors): Move to sem_prag.
      	* sem_ch13.adb
      	(Compile_Time_Warnings_Errors): Move to sem_prag.
      	(Initialize): Remove initialization of table
      	Compile_Time_Warning_Errors.
      	(Validate_Compile_Time_Warning_Error,
      	Validate_Compile_Time_Warning_Errors): Move to sem_prag.
      	* sem_prag.ads (Validate_Compile_Time_Warning_Errors): New
      	procedure.
      	* sem_prag.adb (Initialize): Initialize table
      	Compile_Time_Warning_Errors.
      
      From-SVN: r273202
      Javier Miranda committed
    • [Ada] Crash on named actual in postcondition for generic subprogram · 5291985c
      This patch fixes a crash on compiling the postcondtion for a generic
      subprogram, when the postcondition is a call with both positional and
      named parameter associations.
      
      2019-07-08  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_ch13.adb (Analyze_Aspect_Specifications): For a
      	pre/postcondition of a generic subprogram declaration, do not
      	use Relocate_Node on the aspect expression to construct the
      	corresponding attribute specification, to prevent tree anomalies
      	when the expression is a call with named actual parameters.
      
      gcc/testsuite/
      
      	* gnat.dg/predicate9.adb: New testcase.
      
      From-SVN: r273201
      Ed Schonberg committed
    • [Ada] Spurious error reported by pragma Compile_Time_Error · b91cdf75
      The compiler may trigger spurious errors on pragmas Compile_Time_Error
      and Compile_Time_Warning when their boolean expression computes the size
      of a type. After this patch the following test compiles fine.
      
      with Interfaces; use Interfaces;
      package Types is
         type Arr is array (1 .. 6) of Unsigned_8
           with Size      => 48,
                Alignment => 1;
      
         type Rec is record
            Comp_1 : Unsigned_32;
            Comp_2 : Unsigned_16;
         end record
           with Size      => 48,
                Alignment => 1;
      end Types;
      
      with Types; use Types;
      package Main is
         pragma Compile_Time_Error
           (Arr'Size  = 12, "ERROR: Arr'Size is 48, not 12");
         pragma Compile_Time_Error
           (Arr'Size  = 48, "OK: Arr");
         pragma Compile_Time_Error
           (Arr'Size /= 48, "ERROR: Arr'Size is 48");
      
         pragma Compile_Time_Error
           (Rec'Size  = 34, "ERROR: Rec'Size is 48, not 34");
         pragma Compile_Time_Error
           (Rec'Size  = 48, "OK: Rec");
         pragma Compile_Time_Error
           (Rec'Size /= 48, "ERROR: Rec'Size is 48");
      end Main;
      
      Command: gcc -c main.ads
       Output: main.ads:7:07: OK: Arr
               main.ads:14:07: OK: Rec
      
      2019-07-08  Javier Miranda  <miranda@adacore.com>
      
      gcc/ada/
      
      	* sem_attr.adb (Analyze_Attribute [Attribute_Size]): For pragmas
      	used to report user defined compile time warning or errors
      	handle 'Size for types with known static RM size.
      
      From-SVN: r273200
      Javier Miranda committed
    • [Ada] Crash on Image and Value attributes · ffec45e3
      This patch fixes an issue whereby the creation of an enumeration within
      package where Default_Scalar_Storage_Order is in effect may lead to a
      crash when the attributes Image or Value are applied to objects of said
      type or the type directly.
      
      2019-07-08  Justin Squirek  <squirek@adacore.com>
      
      gcc/ada/
      
      	* exp_imgv.adb (Build_Enumeration_Image_Tables): Default SSO for
      	the building of image tables.
      	(Expand_Image_Attribute): Minor cleanup.
      
      gcc/testsuite/
      
      	* gnat.dg/sso16.adb: New testcase.
      
      From-SVN: r273199
      Justin Squirek committed
    • [Ada] GNAT.Sockets: remove default level in Get/Set_Socket_Option · 0a904120
      2019-07-08  Dmitriy Anisimkov  <anisimko@adacore.com>
      
      gcc/ada/
      
      	* libgnat/g-socket.ads, libgnat/g-socket.adb: Improve
      	documentation.
      	(Get_Socket_Option, Set_Socket_Option): Remove default value for
      	the Level formal.
      
      From-SVN: r273198
      Dmitriy Anisimkov committed
    • [Ada] Spurious visibility error on dynamic_predicate aspect in generic · e87f67eb
      This patch fixes a spurious error when verifying that the visibility of
      the expression of an aspect has not changed between the freeze point of
      the entity to which it applies, and the end of the enclosing declarative
      part. If the entity is a composite type its components must be made
      directly visible for the analysis of the expression. In a generic
      context this must be done explicitly at the end of the declarative part.
      
      2019-07-08  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): For an
      	unanalized aspect in a generic context that has not been
      	analyzed yet, if the aspect applies to a type, place the type on
      	the scope stack to make its components visible, before checking
      	conformance with the version of the expression analyzed at the
      	freeze point.
      
      gcc/testsuite/
      
      	* gnat.dg/predicate8.adb, gnat.dg/predicate8_pkg.adb,
      	gnat.dg/predicate8_pkg.ads: New testcase.
      
      From-SVN: r273197
      Ed Schonberg committed
    • Add myself to MAINTAINERS (Write After Approval) · c19713b7
      From-SVN: r273195
      Kito Cheng committed
    • re PR tree-optimization/83518 (Missing optimization: useless instructions should be dropped) · 38988cbf
      2019-07-08  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/83518
      	* tree-ssa-sccvn.c: Include splay-tree.h.
      	(struct pd_range, struct pd_data): New.
      	(struct vn_walk_cb_data): Add data to track partial definitions.
      	(vn_walk_cb_data::~vn_walk_cb_data): New.
      	(vn_walk_cb_data::push_partial_def): New.
      	(pd_tree_alloc, pd_tree_dealloc, pd_range_compare): New.
      	(vn_reference_lookup_2): When partial defs are registered give up.
      	(vn_reference_lookup_3): Track partial defs for memset and
      	constructor zeroing and for defs from constants.
      
      	* gcc.dg/tree-ssa/ssa-fre-73.c: New testcase.
      	* gcc.dg/tree-ssa/ssa-fre-74.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-fre-75.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-fre-76.c: Likewise.
      	* g++.dg/tree-ssa/pr83518.C: Likewise.
      
      From-SVN: r273194
      Richard Biener committed
    • Add a build config for bootstrapping at -Og · 8849d503
      Although BOOT_CFLAGS can be used to bootstrap with -Og, having a
      dedicated build config is sometimes more convenient.
      
      2019-07-08  Richard Sandiford  <richard.sandiford@arm.com>
      
      config/
      	* bootstrap-Og.mk: New file.
      
      gcc/
      	* doc/install.texi (bootstrap-Og): Document.
      
      From-SVN: r273193
      Richard Sandiford committed
    • Make guality.h handle Yama restricted ptrace mode · 0de175b8
      guality.exp is silently skipped on Linux systems with
      kernel.yama.ptrace_scope=1 because gdb fails to attach to the
      sanity check test.  This patch uses PR_SET_PTRACER (where available)
      to avoid this.
      
      prctl was apparently added in Linux 2.1.57, so I don't think we
      need any tests other than __linux for the #include.
      
      2019-07-08  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/testsuite/
      	* gcc.dg/guality/guality.h: Include <sys/prctl.h> on Linux targets.
      	(main): Use PR_SET_PTRACER where available.
      
      From-SVN: r273192
      Richard Sandiford committed
    • [riscv] Fix ambiguous .md attribute uses · 7ef00402
      This patch is part of a series that fixes ambiguous attribute
      uses in .md files, i.e. cases in which attributes didn't use
      <ITER:ATTR> to specify an iterator, and in which <ATTR> could
      have different values depending on the iterator chosen.
      
      No behavioural change -- produces the same code as before.
      
      2019-07-08  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/riscv/pic.md (*local_pic_load_s<mode>)
      	(*local_pic_load_u<mode>): Explicitly specify the mode iterator
      	referenced by <mode>, giving...
      	(*local_pic_load_s<SUBX:mode>, *local_pic_load_u<SUBX:mode>): ...these.
      	* config/riscv/riscv.md (*sge<u>_<X:mode><GPR:mode>)
      	(*slt<u>_<X:mode><GPR:mode>, *sle<u>_<X:mode><GPR:mode>): Explicitly
      	use <X:MODE> for the mode attribute.
      
      From-SVN: r273191
      Richard Sandiford committed
    • Daily bump. · 0b194960
      From-SVN: r273190
      GCC Administrator committed
  2. 07 Jul, 2019 6 commits
    • re PR tree-optimization/91090 (A suspicious code in tree-ssa-dom.c) · 0411f1d6
              PR tree-optimization/91090
              * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Fix logic error
              in handling of ranges to simplify switch statements.
      
      From-SVN: r273184
      Jeff Law committed
    • rs6000: Delete Ffre · 6ce4dac8
      It is unused.
      
      
      	* config/rs6000/rs6000.md (Ffre): Delete.
      
      From-SVN: r273182
      Segher Boessenkool committed
    • [Darwin] Make a final check on PIC options. · 21f94af9
      Final check on PCI options; for Darwin these are not dependent on the PIE
      ones, although PIE does require PIC to support it.  Specifically, for Darwin,
      "fPIC fno-PIE" should result in the same as "-fno-PIE -fPIC".
      
      2019-07-07  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* config/darwin.c (darwin_override_options): Make a final check on PIC
      	options.
      
      From-SVN: r273181
      Iain Sandoe committed
    • [Darwin] Don't jam symbol stubs on for kernel code. · 2ea64934
      For PPC Darwin, we need the JBSR long jump code to be enabled when generating
      kernel code.  Now we have that handled in rs6000.c, we can drop the conflated
      setting in the common code.  Symbol stubs are not generated for any X86 case.
      
      2019-07-07  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* config/darwin.c (darwin_override_options): Don't jam symbol stubs
      	on for kernel code.
      
      From-SVN: r273180
      Iain Sandoe committed
    • re PR fortran/91077 (Wrong indexing when using a pointer) · 94f3d11c
      2019-07-07  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/91077
      	* trans-array.c (gfc_conv_scalarized_array_ref) Delete code
      	that gave symbol backend decl for subref arrays and deferred
      	length variables.
      
      2019-07-07  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/91077
      	* gfortran.dg/pointer_array_11.f90 : New test.
      
      From-SVN: r273176
      Paul Thomas committed
    • PR91068: Fix MIPS fallout from IRA matched operand changes · 0b3839a4
      PR91068 is a case in which we have (ignoring non-LRA alternatives):
      
        [(set (match_operand:SI 0 "register_operand" "=l,d?")
      	(plus:SI (mult:SI (match_operand:SI 1 "register_operand" "d,d")
      			  (match_operand:SI 2 "register_operand" "d,d"))
      		 (match_operand:SI 3 "register_operand" "0,d")))
         (clobber (match_scratch:SI 4 "=X,l"))
         (clobber (match_scratch:SI 5 "=X,&d"))]
      
      where the first alternative is one instruction but the second is two.
      This is very similar to the case that my recent IRA patches were
      supposed to help.  The crucial difference is that the cheap
      alternative requires a single-register class while the expensive
      alternative uses general registers.
      
      This makes a difference when one of operand 0 or 3 can naturally be
      allocated to LO but the other can't.  If IRA makes that allocation,
      both alternatives require one reload of equal cost and so the first
      alternative clearly wins.
      
      However, if we say that tying operands 0 and 3 saves the cost of a full
      move, then all other things being equal, IRA will prefer to allocate
      both registers to the same GPR.  The registers will then naturally
      fit the second alternative.
      
      This has a more drastic effect in the MIPS case than it should because
      using the GPR alternative is much more expensive there than it appears
      to the RA.  But that's really a separate problem and something we were
      able to live with before my IRA patch.
      
      What makes tying less useful here is the fact that the tied register is
      a single-register class.  I think in those circumstances it's better not
      to use tied operands at all and instead use "l" for the inputs.
      Allocating the input to LO, and allocating the output to LO, then depend
      naturally on class costs.  If we decide to allocate at least one of them
      to LO, we'll use the cheap alternative, otherwise we'll (correctly) use
      the expensive alternative.  This effectively restores the situation
      before my IRA patch, but this time making the preference on the input
      register more explicit.
      
      I originally wrote the patterns in the early days of IRA, and certainly
      well before LRA.  I think they were largely influened by reload rather
      than RA proper (see the comment above *mul_acc_si, which is all about
      the reload behaviour).  LRA copes with the two-"l" case just fine.
      
      The patch may well cause problems for -mno-lra, but I think we should
      cull that option anyway.
      
      2019-07-07  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR target/91068
      	* config/mips/mips.md (*mul_acc_si, *mul_acc_si_r3900, *macc)
      	(*msac, *msac_using_macc, *mul_sub_si): Use "l" for input operands
      	instead of matching them to "l" output operands.
      
      From-SVN: r273175
      Richard Sandiford committed