- 05 Jul, 2019 21 commits
-
-
2019-07-05 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * libgnarl/s-osinte__linux.ads: Link with -lrt before -lpthread. From-SVN: r273120
Arnaud Charlet committed -
This patch adds an explicit range check on an assignment to a component of a bit-packed array, when the index type of the array is an enumeration type with a non-standard representation, Executing the following: gnatmake -f -gnata -q main ./main must yield: 1 is invalid 4097 is invalid 4116 is invalid 4117 is invalid 4118 is invalid 4119 is invalid 4120 is invalid 4121 is invalid ---- with Example; use Example; with My_Types; use My_Types; with Text_IO; use Text_IO; procedure main is begin --We try to access an invalid array location. begin dummy(idx => 1, action => DISABLE); exception when others => Text_IO.Put_Line ("1 is invalid"); end; for I in typ_uint32'(16#1000#) .. 16#101E# loop declare begin -- Text_IO.Put_Line (typ_uint32'image(I) & " OK"); Dummy (Idx => I, action => Enable); exception when others => put_line (typ_uint32'Image (I) & " is invalid"); end; end loop; end; ---- with Interfaces; use Interfaces; package My_Types is subtype typ_bool is boolean; type typ_uint32 is new Interfaces.Unsigned_32; subtype typ_uint16 is typ_uint32 range 0..2**16 - 1; type typ_dis_en is ( DISABLE, ENABLE ); for typ_dis_en'size use 32; for typ_dis_en use ( DISABLE => 0, ENABLE => 1 ); type typ_rid is ( RID_0, RID_2, RID_3, RID_4, RID_5, RID_6, RID_7, RID_8, RID_9, RID_10, RID_11, RID_12, RID_13, RID_14, RID_15, RID_16, RID_17, RID_18, RID_19, RID_26, RID_27, RID_28, RID_29, RID_30 ); for typ_rid use ( RID_0 => 16#1000#, RID_2 => 16#1002#, RID_3 => 16#1003#, RID_4 => 16#1004#, RID_5 => 16#1005#, RID_6 => 16#1006#, RID_7 => 16#1007#, RID_8 => 16#1008#, RID_9 => 16#1009#, RID_10 => 16#100A#, RID_11 => 16#100B#, RID_12 => 16#100C#, RID_13 => 16#100D#, RID_14 => 16#100E#, RID_15 => 16#100F#, RID_16 => 16#1010#, RID_17 => 16#1011#, RID_18 => 16#1012#, RID_19 => 16#1013#, RID_26 => 16#101A#, RID_27 => 16#101B#, RID_28 => 16#101C#, RID_29 => 16#101D#, RID_30 => 16#101E# ); for typ_rid'size use 16; end My_Types; ---- with My_Types; package Example is procedure Check; procedure dummy ( idx : in My_Types.typ_uint32; action : in My_Types.typ_dis_en ); end Example; ---- with Text_IO; use Text_IO; with Unchecked_Conversion; with my_types; use my_types; package body Example is type typ_rid_sts is array (My_Types.typ_rid) of My_Types.typ_bool; for typ_rid_sts'component_size use 1; is_rid_en : typ_rid_sts := (TRUE, false, True, False, true, False, True, false, True, False, TRUE, false, True, False, true, False, True, false, True, False, TRUE, false, True, False); procedure Check is begin pragma Assert (for all I in is_rid_en'range => is_rid_en (I)); end Check; function toRidEvt is new Unchecked_Conversion ( -- Defining source and target types source => My_Types.typ_uint16, target => My_Types.typ_rid ); procedure dummy ( idx : in My_Types.typ_uint32; action : in My_Types.typ_dis_en) is rid_evt : My_Types.typ_rid; begin rid_evt := toRidEvt(idx); if action = My_Types.ENABLE then is_rid_en(rid_evt) := TRUE; else is_rid_en(rid_evt) := FALSE; end if; end dummy; end Example; 2019-07-05 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_pakd.adb (Expand_Bit_Packed_Element_Set): Add explicit range checks when the index type of the bit-packed array is an enumeration type with a non-standard representation, From-SVN: r273119
Ed Schonberg committed -
This patch includes delay statements in the set of control flow statements since their expressions may have side effects, which in turn may affect an infinite recursion. 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * sem_res.adb (Is_Control_Flow_Statement): Delay statements contain an expression, which in turn may have side effects and affect the infinite recursion. As a result, delay statements should not be treated specially. From-SVN: r273118
Hristian Kirtchev committed -
2019-07-05 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * libgnarl/s-linux.ads, libgnarl/s-linux__alpha.ads, libgnarl/s-linux__android.ads, libgnarl/s-linux__hppa.ads, libgnarl/s-linux__mips.ads, libgnarl/s-linux__riscv.ads, libgnarl/s-linux__sparc.ads: Fix typos in comments. From-SVN: r273117
Arnaud Charlet committed -
This patch reimplements the detection of trivial infinite recursion to remove the implicit assumptions concenring the structure and contents of the enclosing subprogram statements. ------------ -- Source -- ------------ -- infinite.adb procedure Infinite with SPARK_Mode is function Func_1 (Val : Integer) return Integer; function Func_2 (Val : Integer) return Integer; function Func_3 (Val : Integer) return Integer; function Func_4 (Val : Integer) return Integer; function Func_5 (Val : Integer) return Integer; function Func_6 (Val : Integer) return Integer; function Func_7 (Val : Integer) return Integer; function Func_8 (Val_1 : Integer; Val_2 : Integer) return Integer; procedure Proc_1 (Val : Integer); function Func_1 (Val : Integer) return Integer is begin return Func_1 (Val); -- WARN end Func_1; function Func_2 (Val : Integer) return Integer is begin return Func_2 (123); -- none end Func_2; function Func_3 (Val : Integer) return Integer is Temp : Integer; begin Temp := Func_3 (Val); -- WARN return Temp; end Func_3; function Func_4 (Val : Integer) return Integer is Temp : Integer; begin Temp := Func_4 (123); -- none return Temp; end Func_4; function Func_5 (Val : Integer) return Integer is begin Proc_1 (Val); return Func_5 (Val); -- none end Func_5; function Func_6 (Val : Integer) return Integer is begin Proc_1 (Val); return Func_6 (123); -- none end Func_6; function Func_7 (Val : Integer) return Integer is begin raise Program_Error; return Func_7 (Val); -- none end Func_7; function Func_8 (Val_1 : Integer; Val_2 : Integer) return Integer is begin return Func_8 (Val_1, 123); -- none end Func_8; procedure Proc_1 (Val : Integer) is begin Proc_1 (Val); -- WARN end Proc_1; begin null; end Infinite; ---------------------------- -- Compilation and output -- ---------------------------- $ gcc -c infinite.adb infinite.adb:14:14: infinite recursion infinite.adb:14:14: Storage_Error would have been raised at run time infinite.adb:25:15: infinite recursion infinite.adb:25:15: Storage_Error would have been raised at run time infinite.adb:61:07: infinite recursion infinite.adb:61:07: Storage_Error would have been raised at run time 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * sem_res.adb (Check_Infinite_Recursion): Reimplemented. (Enclosing_Declaration_Or_Statement, Invoked_With_Different_Arguments, Is_Conditional_Statement, Is_Control_Flow_Statement, Is_Immediately_Within_Body, Is_Raise_Idiom, Is_Raise_Statement, Is_Sole_Statement, Preceded_By_Control_Flow_Statement, Within_Conditional_Statement): New routines. From-SVN: r273116
Hristian Kirtchev committed -
For an anonymous allocator whose type is that of a stand-alone object of an anonymous access-to-object type, the accessibility level is that of the declaration of the stand-alone object; however it was incorrectly computed as being library level compiling under -gnat12 mode. 2019-07-05 Javier Miranda <miranda@adacore.com> gcc/ada/ * exp_ch4.adb (Expand_N_Type_Conversion): Do not apply an accessibility check when the conversion is an access to class-wide interface type and it is an actual parameter. * exp_ch6.adb (Expand_Call_Helper): Add documentation on the accessibility level of an anonymous allocator defining the value of an access parameter. * sem_util.ads, sem_util.adb (Dynamic_Accessibility_Level): Add support for an anonymous allocator whose type is that of a stand-alone object of an anonymous access to object type. gcc/testsuite/ * gnat.dg/access6.adb: New testcase. From-SVN: r273115
Javier Miranda committed -
2019-07-05 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * einfo.ads, sem_res.adb: Typo fixes in comments. From-SVN: r273114
Piotr Trojanek committed -
This patch fixes a bug where if a function is build-in-place, and is exported, and contains an extended_return_statement whose object is initialized with another build-in-place function call, then the compiler will crash. 2019-07-05 Bob Duff <duff@adacore.com> gcc/ada/ * exp_ch6.adb (Is_Build_In_Place_Function): Narrow the check for Has_Foreign_Convention to the imported case only. If a build-in-place function is exported, and called from Ada code, build-in-place protocols should be used. gcc/testsuite/ * gnat.dg/bip_export.adb, gnat.dg/bip_export.ads: New testcase. From-SVN: r273113
Bob Duff committed -
This patch fixes a spurious error on a record aggregate for a variant record when a choice in the aggregate is given by a subtype with a static predicate. The same expansion mechanism for such a variant, used in case statements, must be used here as well. 2019-07-05 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_util.adb (Encloing_Subprogram): If Enclosing_Dynamic_Scope is a loop, continue climbing the scope stack to find the enclosing subprogram. (Gather_Components): Handle properly a choice in a record aggregate that is given by a subtype with a static predicate. gcc/testsuite/ * gnat.dg/aggr25.adb, gnat.dg/aggr25.ads: New testcase. From-SVN: r273112
Ed Schonberg committed -
Remove support added for CodePeer (which was never enabled by default; it was controlled by the -gnatd.K option) for generation of SCIL "contract-only" subprogram bodies. These were intended for use when a subprogram's "real" body is unavailable but the subprogram spec has pre/post-conditions specified. 2019-07-05 Javier Miranda <miranda@adacore.com> gcc/ada/ * debug.adb (-gnatd.K): Leave available this switch. * contracts.adb (Build_And_Analyze_Contract_Only_Subprograms): Remove. * scil_ll.ads, scil_ll.adb (Contract_Only_Body_Flag, Contract_Only_Body_Nodes, Get_Contract_Only_Body, Is_Contract_Only_Body, Set_Contract_Only_Body): Remove. From-SVN: r273111
Javier Miranda committed -
2019-07-05 Pierre-Marie de Rodat <derodat@adacore.com> gcc/ada/ * libgnat/a-strunb.ads: Import documentation from the RM From-SVN: r273110
Pierre-Marie de Rodat committed -
2019-07-05 Pierre-Marie de Rodat <derodat@adacore.com> gcc/ada/ * libgnat/a-strfix.ads: Import documentation from the RM From-SVN: r273109
Pierre-Marie de Rodat committed -
Tools like GNATprove built as GNAT backends rely on adabkend.adb to handle generic switches like the optimisation switches -Oxxx. This patch adds support for -Og and -Ofast that was missing. There is no impact on compilation. 2019-07-05 Yannick Moy <moy@adacore.com> gcc/ada/ * adabkend.adb (Scan_Back_End_Switches): Accept -Og and -Ofast switches. From-SVN: r273108
Yannick Moy committed -
This patch introduces several changes to the new elaboration order mechanism: * The library graph can now discover, store, and organize the various cycles it contains. * The elaboration order mechanism can now diagnose one or all cycles within the library graph. Diagnostics consist of describing the reason for the cycle, listing all units comprising the circuit, and offering suggestions on how to break the cycle. The patch also modifies unit ALI to hide all invocation-related data structures and several implementation-specific types by relocating them in the body of the unit. The patch cleans up most children of Bindo by using better names of routines and formal parameters. ------------ -- Source -- ------------ -- a.ads with B; pragma Elaborate_All (B); with C; pragma Elaborate_All (C); package A is end A; -- b.ads package B is procedure Force_Body; end B; -- b.adb with D; package body B is procedure Force_Body is null; Elab : constant Integer := D.Func; end B; -- c.ads package C is procedure Force_Body; end C; -- c.adb with E; package body C is procedure Force_Body is null; end C; -- d.ads package D is function Func return Integer; end D; -- d.adb with A; package body D is Local : Integer := 123; function Func return Integer is begin return Local; end Func; end D; -- e.ads with A; package E is end E; -- main.adb with B; -- Elaborate_All Elaborate_All with -- C spec <--------------- A spec ---------------------> B spec <------ Main -- ^ ^ ^ ^ -- | | | | -- sbb | | | | sbb -- | | | | -- C body -----------> E spec | D spec <--------- B body -- with | ^ with | -- | | | -- | sbb | | -- | | | -- +------ D body <------------+ -- with Invocation -- -- The cycles are -- -- A spec --> C spec --> E spec --> A spec -- C body -- -- A spec --> B spec --> D body --> A spec -- B body procedure Main is begin null; end Main; ---------------------------- -- Compilation and output -- ---------------------------- $ gnatmake -q main.adb -bargs -d_C -d_N error: Elaboration circularity detected info: info: Reason: info: info: unit "a (spec)" depends on its own elaboration info: info: Circularity: info: info: unit "a (spec)" has with clause and pragma Elaborate_All for unit "b (spec)" info: unit "b (body)" is in the closure of pragma Elaborate_All info: unit "b (body)" has with clause for unit "d (spec)" info: unit "d (body)" is in the closure of pragma Elaborate_All info: unit "d (body)" has with clause for unit "a (spec)" info: info: Suggestions: info: info: change pragma Elaborate_All for unit "b (spec)" to Elaborate in unit "a (spec)" info: remove pragma Elaborate_All for unit "b (spec)" in unit "a (spec)" info: error: Elaboration circularity detected info: info: Reason: info: info: unit "a (spec)" depends on its own elaboration info: info: Circularity: info: info: unit "a (spec)" has with clause and pragma Elaborate_All for unit "c (spec)" info: unit "c (body)" is in the closure of pragma Elaborate_All info: unit "c (body)" has with clause for unit "e (spec)" info: unit "e (spec)" has with clause for unit "a (spec)" info: info: Suggestions: info: info: change pragma Elaborate_All for unit "c (spec)" to Elaborate in unit "a (spec)" info: remove pragma Elaborate_All for unit "c (spec)" in unit "a (spec)" info: gnatmake: *** bind failed. 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * ali.adb: Relocate types Invocation_Construct_Record, Invocation_Relation_Record, and Invocation_Signature_Record to the body of ALI. Relocate tables Invocation_Constructs, Invocation_Relations, and Invocation_Signatures to the body of ALI. Remove type Body_Placement_Codes. Add new types Declaration_Placement_Codes, and Invocation_Graph_Encoding_Codes. Update the literals of type Invocation_Graph_Line_Codes. (Add_Invocation_Construct): Update the parameter profile. Add an invocation construct built from all attributes provided. (Add_Invocation_Relation): Update the parameter profile. Add an invocation relation built from all attributes provided. (Body_Placement): New routine. (Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind): Removed. (Code_To_Declaration_Placement_Kind, Code_To_Invocation_Graph_Encoding_Kind, Column, Declaration_Placement_Kind_To_Code, Extra, For_Each_Invocation_Construct, For_Each_Invocation_Relation, Invocation_Graph_Encoding, Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line, Locations, Name): New routine. (Scan_Invocation_Construct_Line): Reimplement the scanning mechanism. (Scan_Invocation_Graph_Attributes_Line): New routine. (Scan_Invocation_Graph_Line): Use a case statement to dispatch. (Scan_Invocation_Relation_Line): Reimplement the scanning mechanism. (Scope): New routine. (Set_Invocation_Graph_Encoding, Signature, Spec_Placement, Target): New routine. * ali.ads: Add new type Invocation_Graph_Encoding_Kind. Add component Invocation_Graph_Encoding to type Unit_Record. Relocate various types and data structures to the body of ALI. (Add_Invocation_Construct, Add_Invocation_Relation): Update the parameter profile. (Body_Placement): New routine. (Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind): Removed. (Code_To_Declaration_Placement_Kind, Code_To_Invocation_Graph_Encoding_Kind, Column, Declaration_Placement_Kind_To_Code, Extra, For_Each_Invocation_Construct, For_Each_Invocation_Relation, Invocation_Graph_Encoding, Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line, Locations, Name, Scope, Set_Invocation_Graph_Encoding, Signature, Spec_Placement, Target): New routine. * bindo.adb: Add with clause for Binde. Add with and use clauses for Debug. Update the documentation. Add new switches. (Find_Elaboration_Order): Dispatch to the proper elaboration mechanism. * bindo-augmentors.adb: Remove with and use clauses for GNAT and GNAT.Sets. Remove membership set VS. Update the parameter profiles of most routines to use better parameter names. Update the implementation of most routine to use the new parameter names. Remove various redundant assertions. * bindo-builders.adb: Use better names for instantiated data structures. Update all references to these names. Update the parameter profiles of most routines to use better parameter names. Update the implementation of most routine to use the new parameter names. (Build_Library_Graph): Update the parameter profile. Update the call to Create. (Create_Vertex): Reimplemented. (Declaration_Placement_Vertex): New routine. * bindo-builders.ads (Build_Library_Graph): Update the parameter profile and comment on usage. * bindo-diagnostics.adb: Almost a new unit. * bindo-diagnostics.ads: Add a use clause for Bindo.Graphs.Invocation_Graphs. Remove package Cycle_Diagnostics. (Diagnose_Circularities): New routine. * bindo-elaborators.adb: Remove the with and use clauses for Binderr and GNAT.Sets. Remove the use clause for Bindo.Diagnostics.Cycle_Diagnostics. Remove membership set VS. Update the parameter profiles of most routines to use better parameter names. Update the implementation of most routine to use the new parameter names. (Elaborate_Units_Common): Update the parameter profile. Pass an infication to the library graph builder whether the dynamic model is in effect. (Elaborate_Units_Dynamic, Elaborate_Units_Static): Use Diagnose_Circularities to provide diagnostics. (Update_Successor): Use routine In_Same_Component to determine whether the predecessor and successor reside in different components. * bindo-graphs.adb: Add with and use clauses for Butil, Debug, Output, and Bindo.Writers. Remove with and use clauses for GNAT.Lists. Update the parameter profiles of most routines to use better parameter names. Update the implementation of most routine to use the new parameter names. Remove various redundant assertions. Remove doubly linked list EL. Add new type Precedence_Kind. (Add_Cycle): New routine. (Add_Vertex): Update the parameter profile. Update the creation of vertex attributes. (Add_Vertex_And_Complement, Body_Vertex, Column, Complementary_Vertex, Copy_Cycle_Path, Cycle_Kind_Of): New routines. (Destroy_Invocation_Graph_Edge, Destroy_Library_Graph_Cycle, Destroy_Library_Graph_Edge, Extra, File_Name, Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge, Find_Cycles, Find_First_Lower_Precedence_Cycle, Get_LGC_Attributes, Has_Next, Hash_Library_Graph_Cycle, Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle, Highest_Precedence_Edge, In_Same_Component, Insert_And_Sort, Invocation_Edge_Count, Invocation_Graph_Encoding, Is_Cycle_Initiating_Edge, Is_Cyclic_Edge, Is_Cyclic_Elaborate_All_Edge, Is_Cyclic_Elaborate_Body_Edge, Is_Cyclic_Elaborate_Edge, Is_Cyclic_Forced_Edge, Is_Cyclic_Invocation_Edge, Is_Cyclic_With_Edge, Is_Dynamically_Elaborated, Is_Elaborate_All_Edge, Is_Elaborate_Body_Edge, Is_Elaborate_Edge: New routines. (Is_Existing_Predecessor_Successor_Relation): Removed. (Is_Forced_Edge, Is_Invocation_Edge, Is_Recorded_Cycle, Is_Recorded_Edge, Is_With_Edge, Iterate_Edges_Of_Cycle, Kind, Length): New routine. (Lib_Vertex): Removed. (Line, Links_Vertices_In_Same_Component, Maximum_Invocation_Edge_Count, Next, Normalize_And_Add_Cycle, Normalize_Cycle_Path, Number_Of_Cycles, Path, Precedence, Remove_Vertex_And_Complement, Sequence_Next_Cycle): New routines. (Sequence_Next_IGE_Id): Renamed to Sequence_Next_Edge. (Sequence_Next_IGV_Id): Renamed to Sequence_Next_Vertex. (Sequence_Next_LGE_Id): Renamed to Sequence_Next_Edge. (Sequence_Next_LGV_Id): Renamed to Sequence_Next_Vertex. (Set_Is_Existing_Predecessor_Successor_Relation): Removed. (Set_Is_Recorded_Cycle, Set_Is_Recorded_Edge, Set_LGC_Attributes, Spec_Vertex, Trace_Cycle, Trace_Edge, Trace_Eol, Trace_Vertex): New routines. * bindo-graphs.ads: Add with and use clauses for Types and GNAT.Lists. Update the parameter profiles of most routines to use better parameter names. Update the implementation of most routine to use the new parameter names. Add the new instantiated data structures IGE_Lists, IGV_Sets, LGC_Lists, LGE_Lists, LGE_Sets, LGV_Sets, and RC_Sets. Add new type Library_Graph_Cycle_Id along with an empty and initial value. Remove component Lib_Vertex and add new components Body_Vertex and Spec_Vertex to type Invocation_Graph_Vertex_Attributes. Add new type Library_Graph_Cycle_Kind. Add new iterators All_Cycle_Iterator and Edges_Of_Cycle_Iterator. Add new type Library_Graph_Cycle_Attributes. Add new components Cycle_Attributes, Cycles, and Dynamically_Elaborated to type Library_Graph_Attributes. (Body_Vertex, Column, Destroy_Invocation_Graph_Edge, Destroy_Library_Graph_Cycle_Attributes, Destroy_Library_Graph_Edge, Extra, File_Name, Find_Cycles, Has_Elaborate_All_Cycle, Has_Next, Hash_Library_Graph_Cycle, Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle, In_Same_Component, Invocation_Edge_Count, Invocation_Graph_Encoding, Is_Dynamically_Elaborated, Is_Elaborate_All_Edge, Is_Elaborate_Body_Edge, Is_Elaborate_Edge, Is_Forced_Edge, Is_Invocation_Edge, Is_With_Edge, Iterate_All_Cycles, Iterate_Edges_Of_Cycle, Kind): New routines. (Length, Lib_Vertex, (Line, Next, Number_Of_Cycles, Present, Same_Library_Graph_Cycle_Attributes, Spec_Vertex): New routines. * bindo-units.adb (File_Name, Invocation_Graph_Encoding): New routines. * bindo-units.ads: Add new instantiated data structure Unit_Sets. (File_Name, Invocation_Graph_Encoding): New routine. * bindo-validators.adb: Remove with and use clauses for GNAT and GNAT.Sets. Remove membership set US. Update the parameter profiles of most routines to use better parameter names. Update the implementation of most routine to use the new parameter names. (Validate_Cycle, Validate_Cycle_Path, Validate_Cycles, Validate_Invocation_Graph_Vertex): Remove the validation of component Lib_Vertex. Add the validation of components Body_Vertex and Spec_Vertex. (Write_Error): New routine. * bindo-validators.ads (Validate_Cycles): New routine. * bindo-writers.adb: Update the parameter profiles of most routines to use better parameter names. Update the implementation of most routine to use the new parameter names. (Write_Cycle, Write_Cyclic_Edge, Write_Cycles): New routines. (Write_Invocation_Graph_Vertex): Remove the output of component Lib_Vertex. Add the output of components Body_Vertex and Spec_Vertex. * bindo-writers.ads (Write_Cycles): New routine. * debug.adb: Use binder switches -d_C and -d_P, add documentation on their usage. * gnatbind.adb: Remove with and use clauses for Binde. Delegate the choice of elaboration mechanism to Bindo. * lib-writ.adb (Column, Extra, Invoker, Kind, Line, Locations, Name, Placement, Scope, Signature, Target): Removed. (Write_Invocation_Graph): Moved at the top level. (Write_Invocation_Graph_Attributes): New routine. (Write_Invocation_Relation, Write_Invocation_Signature): Moved at the top level. * lib-writ.ads: Add a documentation section on invocation graph attributes. * sem_elab.adb (Body_Placement_Of): New routine. (Declare_Invocation_Construct): Update the call to Add_Invocation_Construct. (Declaration_Placement_Of_Node): New routine. (Get_Invocation_Attributes): Correct the retrieval of the enclosing subprogram where the postcondition procedure lives. (Placement_Of, Placement_Of_Node): Removed. (Record_Invocation_Graph): Record the encoding format used. (Record_Invocation_Graph_Encoding): New routine. (Record_Invocation_Relation): Update the call to Add_Invocation_Relation. (Spec_Placement_Of): Removed. * libgnat/g-lists.ads, libgnat/g-lists.adb (Equal): New routine. From-SVN: r273107
Hristian Kirtchev committed -
This patch suppresses the generation of a predicate check when the expression is a formal IN parameter of a subprogram S. If the check is being applied to the actual in a call, the call is either in the body of S, or in an aspect specfication for S, e.g. a precondition, In both cases the check is redundant bevause it will be applied on any call to S. In the second case the expansion of the predicate check may lead to out-of-scope references the the formal. 2019-07-05 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * checks.adb (Apply_Predicate_Check): Except within the subprogram body that defines the formal, do not apply predicate check on a formal IN parameter: such a check is redundant and its expansion can lead to out-of-scope references when it is originates in a function call in a precondition, gcc/testsuite/ * gnat.dg/predicate7.adb, gnat.dg/predicate7.ads, gnat.dg/predicate7_pkg.ads: New testcase. From-SVN: r273106
Ed Schonberg committed -
Calls to local subprograms in GNATprove may be inlined in some case, but it should not be the case inside quantified expressions which are handled as expressions inside GNATprove. Because quantified expressions are only preanalayzed, the detection of the impossible inlining was not performed. Now fixed. There is no impact on compilation. 2019-07-05 Yannick Moy <moy@adacore.com> gcc/ada/ * sem_res.adb (Resolve_Call): Cannot inline in quantified expressions. * sem_util.adb, sem_util.ads (In_Quantified_Expression): New function. From-SVN: r273105
Yannick Moy committed -
2019-07-05 Bob Duff <duff@adacore.com> gcc/ada/ * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: Fix typo. * gnat_rm.texi: Regenerate. From-SVN: r273104
Bob Duff committed -
This patch fixes a bug in which if pragma Restrictions (No_Stream_Optimizations) is in effect, it is ignored for T'Class'Input. Revision 251886 was causing the compiler to bypass No_Stream_Optimizations. 2019-07-05 Bob Duff <duff@adacore.com> gcc/ada/ * exp_attr.adb (Input): Take the No_Stream_Optimizations restriction into account. From-SVN: r273103
Bob Duff committed -
2019-07-05 Claire Dross <dross@adacore.com> gcc/ada/ * libgnat/a-cofove.ads, libgnat/a-cofove.adb: Definite formal vectors are now always bounded so that they do not need to be limited anymore. From-SVN: r273102
Claire Dross committed -
2019-07-05 Dmitriy Anisimkov <anisimko@adacore.com> gcc/ada/ * libgnat/g-traceb.ads, libgnat/g-traceb.adb (Call_Chain): New function. From-SVN: r273101
Dmitriy Anisimkov committed -
From-SVN: r273100
GCC Administrator committed
-
- 04 Jul, 2019 19 commits
-
-
PR middle-end/78884 * gimplify.c (struct gimplify_omp_ctx): Add add_safelen1 member. (gimplify_bind_expr): If seeing TREE_ADDRESSABLE VLA inside of simd loop body, set ctx->add_safelen1 instead of making it GOVD_PRIVATE. (gimplify_adjust_omp_clauses): Add safelen (1) clause if ctx->add_safelen1 is set. * gcc.dg/gomp/pr78884.c: New test. From-SVN: r273096
Jakub Jelinek committed -
omp-expand.c (expand_omp_for_static_nochunk): Don't emit GOMP_loop_start at the start of second worksharing loop in a scan. * omp-expand.c (expand_omp_for_static_nochunk): Don't emit GOMP_loop_start at the start of second worksharing loop in a scan. For nowait, don't emit GOMP_loop_end_nowait at the end of first worksharing loop in a scan even if there are conditional lastprivates, and do emit GOMP_loop_end_nowait at the end of second worksharing loop. * testsuite/libgomp.c/scan-9.c: New test. * testsuite/libgomp.c/scan-10.c: New test. From-SVN: r273095
Jakub Jelinek committed -
t-darwin8 is nolonger needed (or present) for pre-10.4 powerpc, so remove the reference. 2019-07-04 Iain Sandoe <iain@sandoe.co.uk> * config.host: Remove reference to t-darwin8. From-SVN: r273091
Iain Sandoe committed -
tree-ssa-alias.c (nonoverlapping_component_refs_since_match_p): Fix check for match in the ref walk. * tree-ssa-alias.c (nonoverlapping_component_refs_since_match_p): Fix check for match in the ref walk. From-SVN: r273090
Jan Hubicka committed -
gcc/jit/ChangeLog: 2019-07-04 Andrea Corallo <andrea.corallo@arm.com> * libgccjit.c (gcc_jit_context_new_binary_op): Check result_type to be a numeric type. gcc/testsuite/ChangeLog: 2019-07-04 Andrea Corallo <andrea.corallo@arm.com> * jit.dg/test-error-gcc_jit_context_new_binary_op-bad-res-type.c: New testcase. From-SVN: r273089
Andrea Corallo committed -
Remove the XFAIL on arm in cunroll-15.c since the test passes on trunk. Committed as obvious. testsuite/ * gcc.dg/tree-ssa/cunroll-15.c: Remove XFAIL on arm. From-SVN: r273088
Wilco Dijkstra committed -
2019-07-04 Martin Liska <mliska@suse.cz> * tree-ssa-loop-niter.c (get_upper_bound_based_on_builtin_expr_with_prob): New function. (estimate_numbers_of_iterations): Support __builtin_expect_with_probability for analysis of # of loop iterations. From-SVN: r273087
Martin Liska committed -
gcc/jit/ChangeLog: 2019-07-04 Andrea Corallo <andrea.corallo@arm.com> * docs/topics/compatibility.rst (LIBGCCJIT_ABI_12): New ABI tag. * docs/topics/types.rst: Add gcc_jit_context_new_bitfield. * jit-common.h (namespace recording): Add class bitfield. * jit-playback.c: (DECL_C_BIT_FIELD, SET_DECL_C_BIT_FIELD): Add macros. (playback::context::new_bitfield): New method. (playback::compound_type::set_fields): Add bitfield support. (playback::lvalue::mark_addressable): Was jit_mark_addressable make this a method of lvalue plus return a bool to communicate success. (playback::lvalue::get_address): Check for jit_mark_addressable return value. * jit-playback.h (new_bitfield): New method. (class bitfield): New class. (class lvalue): Add jit_mark_addressable method. * jit-recording.c (recording::context::new_bitfield): New method. (recording::bitfield::replay_into): New method. (recording::bitfield::write_to_dump): Likewise. (recording::bitfield::make_debug_string): Likewise. (recording::bitfield::write_reproducer): Likewise. * jit-recording.h (class context): Add new_bitfield method. (class field): Make it derivable by class bitfield. (class bitfield): Add new class. * libgccjit++.h (class context): Add new_bitfield method. * libgccjit.c (struct gcc_jit_bitfield): New structure. (gcc_jit_context_new_bitfield): New function. * libgccjit.h (LIBGCCJIT_HAVE_gcc_jit_context_new_bitfield) New macro. (gcc_jit_context_new_bitfield): New function. * libgccjit.map (LIBGCCJIT_ABI_12) New ABI tag. gcc/testsuite/ChangeLog: 2019-07-04 Andrea Corallo <andrea.corallo@arm.com> * jit.dg/all-non-failing-tests.h: Add test-accessing-bitfield.c. * jit.dg/test-accessing-bitfield.c: New testcase. * jit.dg/test-error-gcc_jit_context_new_bitfield-invalid-type.c: Likewise. * jit.dg/test-error-gcc_jit_context_new_bitfield-invalid-width.c: Likewise. * jit.dg/test-error-gcc_jit_lvalue_get_address-bitfield.c: Likewise. From-SVN: r273086
Andrea Corallo committed -
I found GIMPLE_EH_ELSE offered exactly the semantics I needed for some Ada changes yet to be contributed, but GIMPLE_EH_ELSE was only built by GIMPLE passes, and I needed to build earlier something that eventually became GIMPLE_EH_ELSE. This patch does that, introducing an EH_ELSE_EXPR tree, and logic to dump it and to gimplify it. for gcc/ChangeLog * doc/generic.texi (Cleanups): Document EH_ELSE_EXPR. * except.c: Likewise. * expr.c (expand_expr_real_1): Reject it. * gimplify.c (gimplify_expr): Gimplify it, within TRY_FINALLY_EXPR. * tree-dump.c (dequeue_and_dump): Dump it. * tree-pretty-print.c (dump_generic_node): Likewise. * tree.c (block_may_fallthru): Handle it. * tree.def (EH_ELSE_EXPR): Introduce it. * gimple-pretty-print.c (dump_gimple_try): Dump TRY_FINALLY with GIMPLE_EH_ELSE as try/finally/else. From-SVN: r273084
Alexandre Oliva committed -
re PR ipa/91062 (gcc.dg/ipa/ipa-pta-1.c dump contains garbage when gcc was configured with --enable-checking=all) 2019-07-04 Richard Biener <rguenther@suse.de> PR ipa/91062 * tree-pass.h (execute_all_ipa_transforms): Add a flag parameter whether to disable GC collection. * passes.c (execute_one_ipa_transform_pass): Likewise, and honor it. (execute_all_ipa_transforms): Likewise and pass it down. * cgraph.c (cgraph_node::get_body): Do not invoke garbage collection from applying IPA transforms. * cgraphunit.c (cgraph_node::expand): Allow garbage collection from applying IPA transforms. From-SVN: r273083
Richard Biener committed -
2019-07-04 Richard Biener <rguenther@suse.de> PR tree-optimization/90911 * tree-vectorizer.h (_loop_vec_info::scalar_loop_scaling): New field. (LOOP_VINFO_SCALAR_LOOP_SCALING): new. * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize scalar_loop_scaling. (vect_transform_loop): Scale scalar loop profile if needed. * tree-vect-loop-manip.c (vect_loop_versioning): When re-using the loop copy from if-conversion adjust edge probabilities and scale the vectorized loop body profile, queue the scalar profile for updating after peeling. From-SVN: r273082
Richard Biener committed -
2019-07-04 James Clarke <jrtc27@debian.org> * libgnarl/s-osinte__kfreebsd-gnu.ads (clockid_t): Make type definition public. (CLOCK_REALTIME): Make value public. From-SVN: r273080
James Clarke committed -
tree-ssa-alias.c (decl_refs_may_alias_p): Add size1 and size2 parameters; return early for must-alias. * tree-ssa-alias.c (decl_refs_may_alias_p): Add size1 and size2 parameters; return early for must-alias. (indirect_ref_may_alias_decl_p): Likewise; when establishing outer types match, try nonoverlapping_component_refs if must-alias is not obvious. (indirect_refs_may_alias_p): Likewise. (refs_may_alias_p_2): Likewise. * gcc.dg/tree-ssa/alias-access-path-3.c: New testcase. * gcc.dg/tree-ssa/alias-access-path-8.c: New testcase. From-SVN: r273079
Jan Hubicka committed -
2019-07-04 Andrew Stubbs <ams@codesourcery.com> gcc/cp/ * cp-tree.h (cp_omp_emit_unmappable_type_notes): New prototype. * decl.c (cp_finish_decl): Call cp_omp_emit_unmappable_type_notes. * decl2.c (cp_omp_mappable_type): Move contents to ... (cp_omp_mappable_type_1): ... here and add note output. (cp_omp_emit_unmappable_type_notes): New function. * semantics.c (finish_omp_clauses): Call cp_omp_emit_unmappable_type_notes in four places. gcc/testsuite/ * g++.dg/gomp/unmappable-1.C: New file. From-SVN: r273078
Andrew Stubbs committed -
2019-07-04 Martin Liska <mliska@suse.cz> PR lto/91078 * lto-common.c (lto_file_finalize): Use memcpy to set file_data->lto_section_header. From-SVN: r273077
Martin Liska committed -
The frontend reports spurious errors on C++ non-default constructors that have formals whose type is an access to subprogram. 2019-07-04 Javier Miranda <miranda@adacore.com> gcc/ada/ * exp_tss.adb (Init_Proc): Adding missing support for access to subprograms and access to protected subprograms of non-default C++ constructors. gcc/testsuite/ * gnat.dg/cpp_constructor.adb, gnat.dg/cpp_constructor_fp.ads, gnat.dg/cpp_constructor_useit.ads: New testcase. From-SVN: r273072
Javier Miranda committed -
This removes old code in the parser that serves no useful purpose and fixes minor issues in the Validsw package. No functional changes. 2019-07-04 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * gnat1drv.adb (Adjust_Global_Switches): Use proper interface to set the validity settings in CodePeer mode. * par-load.adb (Load): Remove all code dealing with validity settings. * validsw.ads (Validity_Check_Copies): Alphabetize. * validsw.adb (Reset_Validity_Check_Options): Set all options to off. (Save_Validity_Check_Options): Save all options. From-SVN: r273071
Eric Botcazou committed -
2019-07-04 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * exp_ch3.adb, exp_ch4.adb, exp_ch4.ads, exp_ch5.adb, exp_ch7.adb, exp_ch9.adb, exp_ch11.adb, exp_unst.adb, rtsfind.ads, sem_attr.adb, sem_ch10.adb, sem_ch12.adb, sem_ch13.adb, sem_dim.adb, sem_disp.adb, xref_lib.adb: Minor reformatting. From-SVN: r273070
Hristian Kirtchev committed -
This patch is needed to check for the Ada RM C.7.1(15) rule in SPARK. 2019-07-04 Joffrey Huguet <huguet@adacore.com> gcc/ada/ * libgnarl/a-taside.ads: Add assertion policy to ignore preconditions. (Abort_Task, Is_Terminated, Is_Callable): Add preconditions. From-SVN: r273069
Joffrey Huguet committed
-