1. 05 Jul, 2019 21 commits
    • [Ada] System.OS_Interface: fix link order on Linux · d90eeca1
      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
    • [Ada] Missing range check on assignment to bit-packed array · 4f469dec
      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
    • [Ada] Failure to detect trivial infinite recursion · be0443c3
      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
    • [Ada] System.Linux: fix typos in comments · fe04f57a
      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
    • [Ada] Failure to detect trivial infinite recursion · 60a38ae1
      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
    • [Ada] Wrong accessibility level under -gnat12 · 43fa58c2
      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
    • [Ada] Typo fixes · 6cc85504
      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
    • [Ada] Crash on exported build-in-place function · adc81ec8
      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
    • [Ada] Spurious error on aggregate with choice that is predicted subtype · 7145d799
      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
    • [Ada] Removing support for SCIL "contract-only" subprogram bodies · de70d01f
      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
    • [Ada] Import documentation from the RM for Ada.Strings.Unbounded · 034a6629
      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
    • [Ada] Import documentation from the RM for Ada.Strings.Fixed · 13e8f0ed
      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
    • [Ada] Accept compilation switches -Og/-Ofast in non-GCC backends · 9cbb5574
      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
    • [Ada] Diagnostics in Elaboration order v4.0 · 9795b203
      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
    • [Ada] Compiler abort on a dynamic predicate used in a precondition · db626148
      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
    • [Ada] Fix inlining in GNATprove inside quantified expressions · 85ee7b49
      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
    • [Ada] Fix typo in GNAT RM · 8518042a
      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
    • [Ada] No_Stream_Optimizations ignored for 'Class'Input · 8e28429a
      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
    • [Ada] Ada.Containers.Formal_Vectors: make vectors always bounded · 584b5290
      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
    • [Ada] GNAT.Traceback: add a Call_Chain function · 9328056b
      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
    • Daily bump. · 0f146681
      From-SVN: r273100
      GCC Administrator committed
  2. 04 Jul, 2019 19 commits
    • re PR middle-end/78884 ([7/8] ICE when gimplifying VLA in OpenMP SIMD region) · ec03bc90
      	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… · 2f03073f
      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
    • [Darwin] Revert one hunk from r273016 (TLC for older Darwin versions). · 61afc8f8
      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… · 532bb2f9
      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
    • jit: gcc_jit_context_new_binary_op check res type · 2b442504
      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
    • Fix arm XFAIL in cunroll-15.c · e2c3bbbf
      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
    • Support __builtin_expect_with_probability for analysis of # of loop iterations. · c80ab4a3
      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
    • introduce gcc_jit_context_new_bitfield · ee118c14
      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
    • introduce EH_ELSE_EXPR tree and gimplifier · ebebc928
      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… · e57c896e
      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
    • re PR tree-optimization/90911 (456.hmmer regression with r272239) · 5cee3239
      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
    • s-osinte__kfreebsd-gnu.ads (clockid_t): Make type definition public. · 5bb8f281
      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… · f5fa046f
      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
    • Improve OpenMP map diagnostics. · 8862ed13
      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
    • Fix loading of lto_section on strict alignment targets (PR lto/91078). · 70980ea2
      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
    • [Ada] Spurious error on non-default C++ constructor · 07c91770
      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
    • [Ada] Clean up support for validity checks in the compiler · 7cbe60de
      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
    • [Ada] Minor reformatting · eedc5882
      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
    • [Ada] Add preconditions in Ada.Task_Identification · 38818659
      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