1. 11 Dec, 2018 19 commits
    • [Ada] Spurious visibility error on aspect Predicate · f5d4b6ab
      The GNAT-defined aspect Predicate has the same semantics as the Ada
      aspect Dynamic_Predicate, including direct visibility to the components
      of a record type to which the aspect applies.
      
      The following must compile quietly:
      
         gcc -c integer_stacks.ads
      
      ----
      pragma SPARK_Mode (On);
      
      with Bounded_Stacks;
      package Integer_Stacks is
           new Bounded_Stacks (Element => Integer, Default_Element => 0);
      ----
      generic
         type Element is private;
         Default_Element : Element;
      package Bounded_Stacks is
      
         type Stack (Capacity : Positive) is tagged private
            with Default_Initial_Condition => Empty (Stack);
      
         function "=" (Left, Right : Stack) return Boolean;
      
         function Extent (This : Stack) return Natural;
      
         function Empty (This : Stack) return Boolean;
      
         function Full (This : Stack) return Boolean;
      
         procedure Reset (This : out Stack) with
           Post'Class => Empty (This) and
                         not Full (This),
           Global     => null,
           Depends    => (This =>+ null);
      
         procedure Push (This : in out Stack;  Item : Element) with
           Pre'Class  => not Full (This) and
                         Extent (This) < This.Capacity,
           Post'Class => not Empty (This) and
                         Extent (This) = Extent (This'Old) + 1,
           Global     => null,
           Depends    => (This =>+ Item);
      
         procedure Pop (This : in out Stack;  Item : out Element) with
           Pre'Class  => not Empty (This),
           Post'Class => not Full (This) and
                         Extent (This) = Extent (This'Old) - 1,
           Global     => null,
           Depends    => (This =>+ null, Item => This);
      
         function Peek (This : Stack) return Element with
           Pre'Class => not Empty (This),
           Global    => null,
           Depends   => (Peek'Result => This);
      
      private
      
         type Contents is array (Positive range <>) of Element;
      
         type Stack (Capacity : Positive) is tagged record
            Values : Contents (1 .. Capacity); -- := (others => Default_Element);
      --        Top    : Natural;
            Top    : Natural := 0;
         end record with Predicate => Top <= Capacity,
           Annotate => (GNATprove,
                        Intentional,
                        "type ""Stack"" is not fully initialized",
                        "Because zeroing Top is sufficient");
      
      end Bounded_Stacks;
      ----
      package body Bounded_Stacks is
      
         ------------
         -- Extent --
         ------------
      
         function Extent (This : Stack) return Natural is
           (This.Top);
      
         -----------
         -- Empty --
         -----------
      
         function Empty (This : Stack) return Boolean is
           (This.Top = 0);
      
         ----------
         -- Full --
         ----------
      
         function Full (This : Stack) return Boolean is
           (This.Top = This.Capacity);
      
         -----------
         -- Reset --
         -----------
      
         procedure Reset (This : out Stack) is
         begin
            This := (This.Capacity, Top => 0, others => <>);
      --        This.Top := 0;
         end Reset;
      
         ----------
         -- Push --
         ----------
      
         procedure Push (This : in out Stack;  Item : Element) is
         begin
            This.Top := This.Top + 1;
            This.Values (This.Top) := Item;
         end Push;
      
         ---------
         -- Pop --
         ---------
      
         procedure Pop (This : in out Stack;  Item : out Element) is
         begin
            Item := This.Values (This.Top);
            This.Top := This.Top - 1;
         end Pop;
      
         ----------
         -- Peek --
         ----------
      
         function Peek (This : Stack) return Element is
           (This.Values (This.Top));
      
         ---------
         -- "=" --
         ---------
      
         function "=" (Left, Right : Stack) return Boolean is
         begin
            if Left.Top /= Right.Top then
               return False;
            else
               for K in 1 .. Left.Top loop
                  if Left.Values (K) /= Right.Values (K) then
                     return False;
                  end if;
               end loop;
               return True;
            end if;
         end "=";
      
      end Bounded_Stacks;
      ----
      
      2018-12-11  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations,
      	Freeze_Entity_Checks): Process aspect Predicate in the same
      	fashion as aspect Dynamic_Predicate.
      
      From-SVN: r266985
      Ed Schonberg committed
    • [Ada] Fix an ICE on instantiated subprogram with -gnatc · 56bad7db
      The following should compile quietly:
      
      $ gcc -c p-proc.ads -gnatc
      
      procedure P.Proc is new G;
      
      with Q;
      
      package P is
      
        generic procedure G;
      
      end P;
      
      with System;
      with Unchecked_Conversion;
      
      package Q is
      
        generic package Inner_G is
      
          type T is access all Integer;
      
          function Cnv is new Unchecked_Conversion (System.Address, T);
      
        end Inner_G;
      
      end Q;
      
      2018-12-11  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* gcc-interface/trans.c (elaborate_all_entities_for_package):
      	Skip aliasing subprograms.
      
      From-SVN: r266984
      Eric Botcazou committed
    • [Ada] Update gnatmetric documentation for the Libadalang-based version · acbdd83d
      2018-12-11  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_ugn/gnat_utility_programs.rst: Update gnatmetric
      	documentation for the Libadalang-based version.
      
      From-SVN: r266983
      Bob Duff committed
    • [Ada] Fix an ACATS regression with CCG · 9f51b855
      2018-12-11  Javier Miranda  <miranda@adacore.com>
      
      gcc/ada/
      
      	* exp_aggr.adb (In_Object_Declaration): Removed.
      	(Is_CCG_Supported_Aggregate): New subprogram that replaces
      	In_Object_Declaration extending its functionality to indicate if
      	an aggregate is in a context supported by the CCG backend.
      
      From-SVN: r266982
      Javier Miranda committed
    • [Ada] Update gnatstub documentation for the Libadalang-based version · e3f2ff72
      2018-12-11  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_ugn/gnat_utility_programs.rst: Update gnatstub
      	documentation for the Libadalang-based version.
      	* gnat_ugn.texi: Regenerate.
      
      From-SVN: r266981
      Bob Duff committed
    • [Ada] Spurious errors on aspect specifications in generic units · 5f531fef
      This patch fixes spurious errors on aspect specifications on record
      types when the aspect expression references a component of the type that
      is not a discriminant. The patch also cleans up the legality checks on
      aspect specifications, and improves error message on illegal aspect
      specifications whose expressions are not conformant between
      specification and freeze point, because of changes in visibility.
      
      2018-12-11  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_ch13.adb (Push_Type, Pop_Type): New procedures, used for
      	analysis of aspect expressions for record types, whose
      	components (not only discriminants) may be referenced in aspect
      	expressions.
      	(Analyze_Aspect_Specifications, Analyze_Aspects_At_Freeze_Point,
      	Analyze_Aspect_At_End-Of_Declarations,
      	Resolve_Aspect_Expressions): Use the new subprograms.
      	(Check_Aspect_At_End_Of_Declarations): Improve error message.
      	(Build_Predicate_Functions): Do not build their bodies in a
      	generic unit.
      	(Is_Derived_Type_With_Constraint): New subprogram to uncover and
      	reject aspect specificationss on types that appear after the
      	type is frozen.
      	* sem_ch13.ads (Push_Scope_And_Install_Discriminants,
      	Uninstall_Discriminants_And_Pop_Scope): Remove.
      	* sem_ch6.adb, sem_ch6.ads (Fully_Conformant_Expressions):
      	Additional parameter to improve error message on illegal aspect
      	specifications whose resolution differ between aspect
      	specification and freeze point.
      	* freeze.adb: Remove references to
      	Install/Uninstall_Discriminants.
      
      gcc/testsuite/
      
      	* gnat.dg/aspect1.adb, gnat.dg/aspect1_horizontal.adb,
      	gnat.dg/aspect1_horizontal.ads, gnat.dg/aspect1_vectors_2d.ads:
      	New testcase.
      	* gnat.dg/static_pred1.adb: Expect an error message.
      
      From-SVN: r266980
      Ed Schonberg committed
    • [Ada] Document the -fgnat-encodings switch · 15bdffc4
      2018-12-11  Pierre-Marie de Rodat  <derodat@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
      	Document the -fgnat-encodings switch.
      	* gnat_ugn.texi: Regenerate.
      
      From-SVN: r266979
      Pierre-Marie de Rodat committed
    • [Ada] Crash on nesting of subunits with bodies acting as specs · ad974123
      This patch corrects an issue whereby a set of nested subunits including
      subprogram subunits acting as bodies would cause a crash when a child
      subunit "withs" an ansestor in certain instances due to a mismanagment
      of the scope stack.
      
      ------------
      -- Source --
      ------------
      
      --  w.ads
      
      package W is
      end;
      
      --  w-b.ads
      
      package W.B is
        pragma Elaborate_Body;
      end;
      
      --  w-b.adb
      
      with W.B.C;
      
      package body w.B is end;
      
      --  w-b-c.adb
      
      with W;
      procedure W.B.C is
        package D is
          procedure E;
        end;
        package body D is separate;
      begin
        null;
      end;
      
      --  w-b-c-d.adb
      
      separate (W.B.C)
      package body D is
        procedure E is separate;
      end;
      
      --  w-b-c-d-e.adb
      
      with W;
      
      separate (W.B.C.D)
      procedure E is
      begin
        null;
      end;
      
      -----------------
      -- Compilation --
      -----------------
      
      $ gnatmake -q w-b.adb
      
      2018-12-11  Justin Squirek  <squirek@adacore.com>
      
      gcc/ada/
      
      	* sem_ch10.adb (Analyze_Subunit): Modify conditional to fully
      	remove parent contexts from library-level subprogram bodies in
      	addition to package bodies.
      
      From-SVN: r266978
      Justin Squirek committed
    • [Ada] Suppress call to Initial_Condition when the annotation is ignored · 30377799
      This patch suppresses the generation of the Initial_Condition procedure
      tasked with verifying the run-time semantics of the pragma when the
      pragma is ignored by means of -gnata, pragma Assertion_Policy, etc.
      
      ------------
      -- Source --
      ------------
      
      --  all_asserts_off.adc
      
      pragma Assertion_Policy (Ignore);
      
      --  all_asserts_on.adc
      
      pragma Assertion_Policy (Check);
      
      --  ic_off.adc
      
      pragma Assertion_Policy (Initial_Condition => Ignore);
      
      --  ic_on.adc
      
      pragma Assertion_Policy (Initial_Condition => Check);
      
      --  init_cond.ads
      
      package Init_Cond
        with SPARK_Mode,
             Initial_Condition => Flag = False
      is
         Flag : Boolean := True;
      
         procedure Set_Flag;
      end Init_Cond;
      
      --  init_cond.adb
      
      package body Init_Cond
        with SPARK_Mode
      is
         procedure Set_Flag is
         begin
            Flag := True;
         end Set_Flag;
      end Init_Cond;
      
      ----------------------------
      -- Compilation and output --
      ----------------------------
      
      & gcc  -c -S -gnatDG init_cond.adb -gnatec=all_asserts_on.adc
      & grep -c "Initial_Condition;" init_cond.adb.dg
      & grep -c "_elabb" init_cond.s
      & gcc  -c -S -gnatDG init_cond.adb -gnatec=ic_on.adc
      & grep -c "Initial_Condition;" init_cond.adb.dg
      & grep -c "_elabb" init_cond.s
      & gcc  -c -S -gnatDG init_cond.adb -gnatec=all_asserts_off.adc
      & grep -c "Initial_Condition;" init_cond.adb.dg
      & grep -c "_elabb" init_cond.s
      & gcc  -c -S -gnatDG init_cond.adb -gnatec=ic_off.adc
      & grep -c "Initial_Condition;" init_cond.adb.dg
      & grep -c "_elabb" init_cond.s
      2
      4
      2
      4
      0
      0
      0
      0
      
      2018-12-11  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* exp_prag.adb (Expand_Pragma_Initial_Condition): Do not
      	generate an Initial_Condition procedure and a call to it when
      	the associated pragma is ignored.
      	* sem_ch10.adb (Analyze_Compilation_Unit): Minor cleanup.
      
      From-SVN: r266977
      Hristian Kirtchev committed
    • [Ada] Almost always inline init. procedure of small and simple records · 13a6dfe3
      2018-12-11  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* fe.h (Debug_Generated_Code): Declare.
      	* gcc-interface/gigi.h (enum inline_status_t): Rename
      	is_disabled to is_default, is_enabled to is_requested and add
      	is_prescribed.
      	* gcc-interface/decl.c (inline_status_for_subprog): New function.
      	(gnat_to_gnu_entity) <E_Subprogram_Type>: Use it to get the
      	inlining status of the subprogram.
      	* gcc-interface/trans.c (gigi): Adjust to above renaming.
      	(build_raise_check): Likewise.
      	(Compilation_Unit_to_gnu): Likewise.
      	(gnat_to_gnu): Likewise.
      	* gcc-interface/utils.c (create_subprog_decl): Likewise.  Deal
      	with is_prescribed status by setting
      	DECL_DISREGARD_INLINE_LIMITS.  Do not set the
      	DECL_NO_INLINE_WARNING_P flag if Debug_Generated_Code is true.
      
      From-SVN: r266976
      Eric Botcazou committed
    • ccmp.c (ccmp_candidate_p): Use GIMPLE API properly. · d6a73cc3
      2018-12-11  Richard Biener  <rguenther@suse.de>
      
      	* ccmp.c (ccmp_candidate_p): Use GIMPLE API properly.
      
      From-SVN: r266975
      Richard Biener committed
    • re PR lto/86004 (Several lto test cases begin failing with r260963) · c7e8e26e
      	PR lto/86004
      	* doc/sourcebuild.texi (lto_incremental): Document new effective
      	target.
      
      	* lib/target-supports.exp (check_effective_target_lto_incremental):
      	New.
      	* g++.dg/lto/pr69137_0.C: Require lto_incremental effective target.
      	* g++.dg/lto/pr65316_0.C: Likewise.
      	* g++.dg/lto/pr85176_0.C: Likewise.
      	* g++.dg/lto/pr79000_0.C: Likewise.
      	* g++.dg/lto/pr66180_0.C: Likewise.
      	* g++.dg/lto/pr65193_0.C: Likewise.
      	* g++.dg/lto/pr69077_0.C: Likewise.
      	* g++.dg/lto/pr68057_0.C: Likewise.
      	* g++.dg/lto/pr66705_0.C: Likewise.
      	* g++.dg/lto/pr65302_0.C: Likewise.
      	* g++.dg/lto/20091002-1_0.C: Likewise.
      	* g++.dg/lto/pr81940_0.C: Likewise.
      	* g++.dg/lto/pr64043_0.C: Likewise.
      	* g++.dg/lto/pr65549_0.C: Likewise.
      	* g++.dg/lto/pr69133_0.C: Likewise.
      	* gfortran.dg/lto/pr79108_0.f90: Likewise.
      
      From-SVN: r266974
      Jakub Jelinek committed
    • rs6000: Don't use rs6000_isa_flags_explicit for soft float tests (PR88145) · b900470b
      ...specifically, those for builtins.  Soft float can be enabled
      implicitly, too (for certain CPUs for example).  We should use
      rs6000_isa_flags instead, to decide whether to expand a builtin or
      to bail out with an error instead.
      
      
      	PR target/88145
      	* config/rs6000/rs6000.c (rs6000_expand_zeroop_builtin): Use
      	rs6000_isa_flags instead of rs6000_isa_flags_explicit to decide
      	whether soft float is enabled.
      	(rs6000_expand_mtfsb_builtin): Ditto.
      	(rs6000_expand_set_fpscr_rn_builtin): Ditto.
      	(rs6000_expand_set_fpscr_drn_builtin): Ditto.
      
      From-SVN: r266973
      Segher Boessenkool committed
    • re PR c/88430 (-Wmissing-attributes warnings when including libquadmath headers) · 3b14d7fa
      	PR c/88430
      	* quadmath_weak.h (__qmath2): Add __quadmath_throw.
      
      From-SVN: r266972
      Jakub Jelinek committed
    • re PR tree-optimization/80520 (Performance regression from missing if-conversion) · 7b1ff601
      	PR tree-optimization/80520
      	* gimple-ssa-split-paths.c (is_feasible_trace): Recognize half
      	diamonds that are likely if convertable.
      
      	* gcc.dg/tree-ssa/split-path-5.c: Update expected output.
      	* gcc.dg/tree-ssa/split-path-11.c: New test.
      
      From-SVN: r266971
      Jeff Law committed
    • documentation_hacking.xml: Update reference to epubcheck. · 72cfde41
      	* doc/xml/manual/documentation_hacking.xml: Update reference
      	to epubcheck.
      
      From-SVN: r266970
      Gerald Pfeifer committed
    • 2018-12-10 Steven G. Kargl <kargl@gcc.gnu.org> · 87550b74
      	PR fortran/97922
      	* io.c (gfc_match_open): Additional checks on ASYNCHRONOUS.
      
      2018-12-10  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/97922
      	* gfortran.dg/io_constraints_8.f90: Update error message.
      	* gfortran.dg/pr87922.f90: New test.
      
      From-SVN: r266968
      Steven G. Kargl committed
    • PR tree-optimization/86196 - Bogus -Wrestrict on memcpy between array elements at unequal indices · 1486eb79
      gcc/ChangeLog:
      
      	PR tree-optimization/86196
      	* gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
      	base size only of arrays.
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/86196
      	* gcc.dg/Wrestrict-18.c: New test.
      
      From-SVN: r266967
      Martin Sebor committed
    • Daily bump. · 03da9b75
      From-SVN: r266966
      GCC Administrator committed
  2. 10 Dec, 2018 18 commits
  3. 09 Dec, 2018 3 commits