[multiple changes]
2014-08-01 Arnaud Charlet <charlet@adacore.com> * exp_vfpt.adb, exp_vfpt.ads: Removed, no longer used. * gcc-interface/Make-lang.in: Remove exp_vfpt.o 2014-08-01 Javier Miranda <miranda@adacore.com> * inline.ads (Inlined_Calls, Backend_Calls, Backend_Inlined_Subps, Backend_Not_Inlined_Subps): Declarations moved to inline.adb (Cannot_Inline): Update documentation. (Check_And_Build_Body_To_Inline): Renamed. (List_Inlining_Info): Subprogram moved here from package exp_ch6. * inline.adb (Check_Inlining_Restrictions): New local variable. (Inlined_Calls, Backend_Calls, Backend_Inlined_Subps, Backend_Not_Inlined_Subps): Declarations moved here from inline.ads (Number_Of_Statements): Removed. (Remove_Pragmas): Avoid duplicated version of this subprogram. (Build_Body_To_Inline): Code cleanup. (Build_Body_To_Inline.Has_Excluded_Statament): Removed. (Check_And_Build_Body_To_Inline): Renamed. Code cleanup. (Check_Body_To_Inline): Removed. (Generate_Body_To_Inline): Renamed as Generate_Subprogram_Body. (Has_Excluded_Declaration): No action if not Check_Inlining_Restrictions. (Has_Excluded_Statement): No action if not Check_Inlining_Restrictions. (Initialize): Initialize the lists of inlined calls and subprograms. (List_Inlining_Info): Subprogram moved here from package exp_ch6. * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Update call to Check_And_Build_Body_To_Inline since it has been renamed as Check_And_Split_Unconstrained_Function * exp_ch6.ad[sb] (List_Inlining_Info): Subprogram moved to package inline. * gnat1drv.adb Update call to Inline.List_Inlining_Info. 2014-08-01 Vincent Celier <celier@adacore.com> * debug.adb: Add documentation for new debug switch -ds. * make.adb (List_Bad_Compilations): Do not issue any message when switch -ds is specified. * makeutl.adb (Fail_Program): Do not issue any message when -ds is specified. (Finish_Program): Ditto. 2014-08-01 Robert Dewar <dewar@adacore.com> * s-exnint.adb, s-exnint.ads, s-wwdwch.ads, s-carsi8.ads, s-casi32.ads, indepsw.adb, a-timoau.ads, s-explli.adb, s-explli.ads, s-casi16.ads, s-powtab.ads, g-wistsp.ads, a-ztmoau.adb, indepsw-gnu.adb, s-imgllb.ads, types.adb, gnat.ads, s-proinf.adb, indepsw-aix.adb, s-caun64.ads, s-imgllw.ads, s-traces-default.adb, s-vxwork-x86.ads, s-expllu.adb, s-exnlli.adb, s-exnlli.ads, s-traces.adb, widechar.ads, stand.adb, s-expint.adb, s-tratas-default.adb, s-expint.ads, s-geveop.ads, s-caun32.ads, s-expuns.adb, s-mantis.adb, s-mantis.ads, s-caun16.ads, s-tasinf.adb, s-memcop.ads, s-dsaser.ads, s-imgbiu.ads, a-szmzco.ads, g-strspl.ads, s-casi64.ads, g-zstspl.ads, indepsw-mingw.adb, tree_io.adb, s-boarop.ads, uname.ads, s-fore.adb, s-fore.ads, g-timsta.adb, g-timsta.ads, s-assert.adb, s-vector.ads, s-tratas.adb, s-tratas.ads: Minor fix to copyright notices. 2014-08-01 Eric Botcazou <ebotcazou@adacore.com> * sinfo.ads: Remove long obsolete comment. From-SVN: r213423
This commit is contained in:
parent
de65e0e4ec
commit
16b10ccc1f
72 changed files with 503 additions and 1874 deletions
|
@ -1,3 +1,66 @@
|
|||
2014-08-01 Arnaud Charlet <charlet@adacore.com>
|
||||
|
||||
* exp_vfpt.adb, exp_vfpt.ads: Removed, no longer used.
|
||||
* gcc-interface/Make-lang.in: Remove exp_vfpt.o
|
||||
|
||||
2014-08-01 Javier Miranda <miranda@adacore.com>
|
||||
|
||||
* inline.ads (Inlined_Calls, Backend_Calls,
|
||||
Backend_Inlined_Subps, Backend_Not_Inlined_Subps): Declarations
|
||||
moved to inline.adb (Cannot_Inline): Update documentation.
|
||||
(Check_And_Build_Body_To_Inline): Renamed.
|
||||
(List_Inlining_Info): Subprogram moved here from package exp_ch6.
|
||||
* inline.adb (Check_Inlining_Restrictions): New local variable.
|
||||
(Inlined_Calls, Backend_Calls, Backend_Inlined_Subps,
|
||||
Backend_Not_Inlined_Subps): Declarations moved here
|
||||
from inline.ads (Number_Of_Statements): Removed.
|
||||
(Remove_Pragmas): Avoid duplicated version of this subprogram.
|
||||
(Build_Body_To_Inline): Code cleanup.
|
||||
(Build_Body_To_Inline.Has_Excluded_Statament): Removed.
|
||||
(Check_And_Build_Body_To_Inline): Renamed. Code cleanup.
|
||||
(Check_Body_To_Inline): Removed.
|
||||
(Generate_Body_To_Inline): Renamed as Generate_Subprogram_Body.
|
||||
(Has_Excluded_Declaration): No action if not
|
||||
Check_Inlining_Restrictions.
|
||||
(Has_Excluded_Statement): No action if not Check_Inlining_Restrictions.
|
||||
(Initialize): Initialize the lists of inlined calls and subprograms.
|
||||
(List_Inlining_Info): Subprogram moved here from package exp_ch6.
|
||||
* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Update call
|
||||
to Check_And_Build_Body_To_Inline since it has been renamed as
|
||||
Check_And_Split_Unconstrained_Function
|
||||
* exp_ch6.ad[sb] (List_Inlining_Info): Subprogram moved to
|
||||
package inline.
|
||||
* gnat1drv.adb Update call to Inline.List_Inlining_Info.
|
||||
|
||||
2014-08-01 Vincent Celier <celier@adacore.com>
|
||||
|
||||
* debug.adb: Add documentation for new debug switch -ds.
|
||||
* make.adb (List_Bad_Compilations): Do not issue any message
|
||||
when switch -ds is specified.
|
||||
* makeutl.adb (Fail_Program): Do not issue any message when
|
||||
-ds is specified.
|
||||
(Finish_Program): Ditto.
|
||||
|
||||
2014-08-01 Robert Dewar <dewar@adacore.com>
|
||||
|
||||
* s-exnint.adb, s-exnint.ads, s-wwdwch.ads, s-carsi8.ads,
|
||||
s-casi32.ads, indepsw.adb, a-timoau.ads, s-explli.adb, s-explli.ads,
|
||||
s-casi16.ads, s-powtab.ads, g-wistsp.ads, a-ztmoau.adb,
|
||||
indepsw-gnu.adb, s-imgllb.ads, types.adb, gnat.ads, s-proinf.adb,
|
||||
indepsw-aix.adb, s-caun64.ads, s-imgllw.ads, s-traces-default.adb,
|
||||
s-vxwork-x86.ads, s-expllu.adb, s-exnlli.adb, s-exnlli.ads,
|
||||
s-traces.adb, widechar.ads, stand.adb, s-expint.adb,
|
||||
s-tratas-default.adb, s-expint.ads, s-geveop.ads, s-caun32.ads,
|
||||
s-expuns.adb, s-mantis.adb, s-mantis.ads, s-caun16.ads, s-tasinf.adb,
|
||||
s-memcop.ads, s-dsaser.ads, s-imgbiu.ads, a-szmzco.ads, g-strspl.ads,
|
||||
s-casi64.ads, g-zstspl.ads, indepsw-mingw.adb, tree_io.adb,
|
||||
s-boarop.ads, uname.ads, s-fore.adb, s-fore.ads, g-timsta.adb,
|
||||
g-timsta.ads, s-assert.adb, s-vector.ads, s-tratas.adb,
|
||||
s-tratas.ads: Minor fix to copyright notices.
|
||||
|
||||
2014-08-01 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* sinfo.ads: Remove long obsolete comment.
|
||||
2014-08-01 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* sem_util.adb: Add guard to setting of No_Predicate_On_Actual.
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- This specification is derived from the Ada Reference Manual for use with --
|
||||
-- GNAT. The copyright notice above, and the license provisions that follow --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -214,7 +214,7 @@ package body Debug is
|
|||
-- dp Prints the contents of the Q used by Make.Compile_Sources
|
||||
-- dq Prints source files as they are enqueued and dequeued
|
||||
-- dr
|
||||
-- ds
|
||||
-- ds Suppress exit message when compilation fails
|
||||
-- dt Display time stamps when there is a mismatch
|
||||
-- du List units as their ali files are acquired
|
||||
-- dv
|
||||
|
@ -801,6 +801,10 @@ package body Debug is
|
|||
-- used by routine Make.Compile_Sources. Useful to figure out the
|
||||
-- order in which sources are recompiled.
|
||||
|
||||
-- ds When one or more compilations compilation fail, gnatmake does not
|
||||
-- issue an error message such as:
|
||||
-- gnatmake: "/path/to/main.adb" compilation error
|
||||
|
||||
-- dt When a time stamp mismatch has been found for an ALI file,
|
||||
-- display the source file name, the time stamp expected and
|
||||
-- the time stamp found.
|
||||
|
@ -820,6 +824,10 @@ package body Debug is
|
|||
-- of execution, such as temporary config pragma files, mapping
|
||||
-- files or project path files.
|
||||
|
||||
-- ds When one or more compilations compilation fail, gprbuild does not
|
||||
-- issue the error message:
|
||||
-- gprbuild: *** compilation phase failed
|
||||
|
||||
-- dt When a time stamp mismatch has been found for an ALI file,
|
||||
-- display the source file name, the time stamp expected and
|
||||
-- the time stamp found.
|
||||
|
|
|
@ -51,7 +51,6 @@ with Namet; use Namet;
|
|||
with Nlists; use Nlists;
|
||||
with Nmake; use Nmake;
|
||||
with Opt; use Opt;
|
||||
with Output; use Output;
|
||||
with Restrict; use Restrict;
|
||||
with Rident; use Rident;
|
||||
with Rtsfind; use Rtsfind;
|
||||
|
@ -69,7 +68,6 @@ with Sem_Res; use Sem_Res;
|
|||
with Sem_SCIL; use Sem_SCIL;
|
||||
with Sem_Util; use Sem_Util;
|
||||
with Sinfo; use Sinfo;
|
||||
with Sinput; use Sinput;
|
||||
with Snames; use Snames;
|
||||
with Stand; use Stand;
|
||||
with Stringt; use Stringt;
|
||||
|
@ -9647,139 +9645,4 @@ package body Exp_Ch6 is
|
|||
end if;
|
||||
end Needs_Result_Accessibility_Level;
|
||||
|
||||
------------------------
|
||||
-- List_Inlining_Info --
|
||||
------------------------
|
||||
|
||||
procedure List_Inlining_Info is
|
||||
Elmt : Elmt_Id;
|
||||
Nod : Node_Id;
|
||||
Count : Nat;
|
||||
|
||||
begin
|
||||
if not Debug_Flag_Dot_J then
|
||||
return;
|
||||
end if;
|
||||
|
||||
-- Generate listing of calls inlined by the frontend
|
||||
|
||||
if Present (Inlined_Calls) then
|
||||
Count := 0;
|
||||
Elmt := First_Elmt (Inlined_Calls);
|
||||
while Present (Elmt) loop
|
||||
Nod := Node (Elmt);
|
||||
|
||||
if In_Extended_Main_Code_Unit (Nod) then
|
||||
Count := Count + 1;
|
||||
|
||||
if Count = 1 then
|
||||
Write_Str ("Listing of frontend inlined calls");
|
||||
Write_Eol;
|
||||
end if;
|
||||
|
||||
Write_Str (" ");
|
||||
Write_Int (Count);
|
||||
Write_Str (":");
|
||||
Write_Location (Sloc (Nod));
|
||||
Write_Str (":");
|
||||
Output.Write_Eol;
|
||||
end if;
|
||||
|
||||
Next_Elmt (Elmt);
|
||||
end loop;
|
||||
end if;
|
||||
|
||||
-- Generate listing of calls passed to the backend
|
||||
|
||||
if Present (Backend_Calls) then
|
||||
Count := 0;
|
||||
|
||||
Elmt := First_Elmt (Backend_Calls);
|
||||
while Present (Elmt) loop
|
||||
Nod := Node (Elmt);
|
||||
|
||||
if In_Extended_Main_Code_Unit (Nod) then
|
||||
Count := Count + 1;
|
||||
|
||||
if Count = 1 then
|
||||
Write_Str ("Listing of inlined calls passed to the backend");
|
||||
Write_Eol;
|
||||
end if;
|
||||
|
||||
Write_Str (" ");
|
||||
Write_Int (Count);
|
||||
Write_Str (":");
|
||||
Write_Location (Sloc (Nod));
|
||||
Output.Write_Eol;
|
||||
end if;
|
||||
|
||||
Next_Elmt (Elmt);
|
||||
end loop;
|
||||
end if;
|
||||
|
||||
-- Generate listing of subprograms passed to the backend
|
||||
|
||||
if Present (Backend_Inlined_Subps)
|
||||
and then Back_End_Inlining
|
||||
then
|
||||
Count := 0;
|
||||
|
||||
Elmt := First_Elmt (Backend_Inlined_Subps);
|
||||
while Present (Elmt) loop
|
||||
Nod := Node (Elmt);
|
||||
|
||||
Count := Count + 1;
|
||||
|
||||
if Count = 1 then
|
||||
Write_Str
|
||||
("Listing of inlined subprograms passed to the backend");
|
||||
Write_Eol;
|
||||
end if;
|
||||
|
||||
Write_Str (" ");
|
||||
Write_Int (Count);
|
||||
Write_Str (":");
|
||||
Write_Name (Chars (Nod));
|
||||
Write_Str (" (");
|
||||
Write_Location (Sloc (Nod));
|
||||
Write_Str (")");
|
||||
Output.Write_Eol;
|
||||
|
||||
Next_Elmt (Elmt);
|
||||
end loop;
|
||||
end if;
|
||||
|
||||
-- Generate listing of subprogram that cannot be inlined by the backend
|
||||
|
||||
if Present (Backend_Not_Inlined_Subps)
|
||||
and then Back_End_Inlining
|
||||
then
|
||||
Count := 0;
|
||||
|
||||
Elmt := First_Elmt (Backend_Not_Inlined_Subps);
|
||||
while Present (Elmt) loop
|
||||
Nod := Node (Elmt);
|
||||
|
||||
Count := Count + 1;
|
||||
|
||||
if Count = 1 then
|
||||
Write_Str
|
||||
("Listing of subprograms that cannot inline the backend");
|
||||
Write_Eol;
|
||||
end if;
|
||||
|
||||
Write_Str (" ");
|
||||
Write_Int (Count);
|
||||
Write_Str (":");
|
||||
Write_Name (Chars (Nod));
|
||||
Write_Str (" (");
|
||||
Write_Location (Sloc (Nod));
|
||||
Write_Str (")");
|
||||
Output.Write_Eol;
|
||||
|
||||
Next_Elmt (Elmt);
|
||||
end loop;
|
||||
end if;
|
||||
end List_Inlining_Info;
|
||||
|
||||
end Exp_Ch6;
|
||||
|
|
|
@ -139,10 +139,6 @@ package Exp_Ch6 is
|
|||
-- Predicate to recognize stubbed procedures and null procedures, which
|
||||
-- can be inlined unconditionally in all cases.
|
||||
|
||||
procedure List_Inlining_Info;
|
||||
-- Generate listing of calls inlined by the frontend plus listing of
|
||||
-- calls to inline subprograms passed to the backend.
|
||||
|
||||
procedure Make_Build_In_Place_Call_In_Allocator
|
||||
(Allocator : Node_Id;
|
||||
Function_Call : Node_Id);
|
||||
|
|
|
@ -1,690 +0,0 @@
|
|||
------------------------------------------------------------------------------
|
||||
-- --
|
||||
-- GNAT COMPILER COMPONENTS --
|
||||
-- --
|
||||
-- E X P _ V F P T --
|
||||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1997-2012, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
-- ware Foundation; either version 3, or (at your option) any later ver- --
|
||||
-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
|
||||
-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
|
||||
-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
|
||||
-- for more details. You should have received a copy of the GNU General --
|
||||
-- Public License distributed with GNAT; see file COPYING3. If not, go to --
|
||||
-- http://www.gnu.org/licenses for a complete copy of the license. --
|
||||
-- --
|
||||
-- GNAT was originally developed by the GNAT team at New York University. --
|
||||
-- Extensive contributions were provided by Ada Core Technologies Inc. --
|
||||
-- --
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
with Atree; use Atree;
|
||||
with Einfo; use Einfo;
|
||||
with Nlists; use Nlists;
|
||||
with Nmake; use Nmake;
|
||||
with Rtsfind; use Rtsfind;
|
||||
with Sem_Res; use Sem_Res;
|
||||
with Sinfo; use Sinfo;
|
||||
with Stand; use Stand;
|
||||
with Tbuild; use Tbuild;
|
||||
with Urealp; use Urealp;
|
||||
with Eval_Fat; use Eval_Fat;
|
||||
|
||||
package body Exp_VFpt is
|
||||
|
||||
-- Vax floating point format (from Vax Architecture Reference Manual
|
||||
-- version 6):
|
||||
|
||||
-- Float F:
|
||||
-- --------
|
||||
|
||||
-- 1 1
|
||||
-- 5 4 7 6 0
|
||||
-- +-+---------------+--------------+
|
||||
-- |S| exp | fraction | A
|
||||
-- +-+---------------+--------------+
|
||||
-- | fraction | A + 2
|
||||
-- +--------------------------------+
|
||||
|
||||
-- bit 15 is the sign bit,
|
||||
-- bits 14:7 is the excess 128 binary exponent,
|
||||
-- bits 6:0 and 31:16 the normalized 24-bit fraction with the redundant
|
||||
-- most significant fraction bit not represented.
|
||||
|
||||
-- An exponent value of 0 together with a sign bit of 0, is taken to
|
||||
-- indicate that the datum has a value of 0. Exponent values of 1 through
|
||||
-- 255 indicate true binary exponents of -127 to +127. An exponent value
|
||||
-- of 0, together with a sign bit of 1, is taken as reserved.
|
||||
|
||||
-- Note that fraction bits are not continuous in memory, VAX is little
|
||||
-- endian (LSB first).
|
||||
|
||||
-- Float D:
|
||||
-- --------
|
||||
|
||||
-- 1 1
|
||||
-- 5 4 7 6 0
|
||||
-- +-+---------------+--------------+
|
||||
-- |S| exp | fraction | A
|
||||
-- +-+---------------+--------------+
|
||||
-- | fraction | A + 2
|
||||
-- +--------------------------------+
|
||||
-- | fraction | A + 4
|
||||
-- +--------------------------------+
|
||||
-- | fraction (low) | A + 6
|
||||
-- +--------------------------------+
|
||||
|
||||
-- Note that the fraction bits are not continuous in memory. Bytes in a
|
||||
-- words are stored in little endian format, but words are stored using
|
||||
-- big endian format (PDP endian).
|
||||
|
||||
-- Like Float F but with 55 bits for the fraction.
|
||||
|
||||
-- Float G:
|
||||
-- --------
|
||||
|
||||
-- 1 1
|
||||
-- 5 4 4 3 0
|
||||
-- +-+---------------------+--------+
|
||||
-- |S| exp | fract | A
|
||||
-- +-+---------------------+--------+
|
||||
-- | fraction | A + 2
|
||||
-- +--------------------------------+
|
||||
-- | fraction | A + 4
|
||||
-- +--------------------------------+
|
||||
-- | fraction (low) | A + 6
|
||||
-- +--------------------------------+
|
||||
|
||||
-- Exponent values of 1 through 2047 indicate true binary exponents of
|
||||
-- -1023 to +1023.
|
||||
|
||||
-- Main differences compared to IEEE 754:
|
||||
|
||||
-- * No denormalized numbers
|
||||
-- * No infinity
|
||||
-- * No NaN
|
||||
-- * No -0.0
|
||||
-- * Reserved values (exp = 0, sign = 1)
|
||||
-- * Vax mantissa represent values [0.5, 1)
|
||||
-- * Bias is shifted by 1 (for single float: 128 on Vax, 127 on IEEE)
|
||||
|
||||
VAXFF_Digits : constant := 6;
|
||||
VAXDF_Digits : constant := 9;
|
||||
VAXGF_Digits : constant := 15;
|
||||
|
||||
----------------------
|
||||
-- Expand_Vax_Arith --
|
||||
----------------------
|
||||
|
||||
procedure Expand_Vax_Arith (N : Node_Id) is
|
||||
Loc : constant Source_Ptr := Sloc (N);
|
||||
Typ : constant Entity_Id := Base_Type (Etype (N));
|
||||
Typc : Character;
|
||||
Atyp : Entity_Id;
|
||||
Func : RE_Id;
|
||||
Args : List_Id;
|
||||
|
||||
begin
|
||||
-- Get arithmetic type, note that we do D stuff in G
|
||||
|
||||
if Digits_Value (Typ) = VAXFF_Digits then
|
||||
Typc := 'F';
|
||||
Atyp := RTE (RE_F);
|
||||
else
|
||||
Typc := 'G';
|
||||
Atyp := RTE (RE_G);
|
||||
end if;
|
||||
|
||||
case Nkind (N) is
|
||||
|
||||
when N_Op_Abs =>
|
||||
if Typc = 'F' then
|
||||
Func := RE_Abs_F;
|
||||
else
|
||||
Func := RE_Abs_G;
|
||||
end if;
|
||||
|
||||
when N_Op_Add =>
|
||||
if Typc = 'F' then
|
||||
Func := RE_Add_F;
|
||||
else
|
||||
Func := RE_Add_G;
|
||||
end if;
|
||||
|
||||
when N_Op_Divide =>
|
||||
if Typc = 'F' then
|
||||
Func := RE_Div_F;
|
||||
else
|
||||
Func := RE_Div_G;
|
||||
end if;
|
||||
|
||||
when N_Op_Multiply =>
|
||||
if Typc = 'F' then
|
||||
Func := RE_Mul_F;
|
||||
else
|
||||
Func := RE_Mul_G;
|
||||
end if;
|
||||
|
||||
when N_Op_Minus =>
|
||||
if Typc = 'F' then
|
||||
Func := RE_Neg_F;
|
||||
else
|
||||
Func := RE_Neg_G;
|
||||
end if;
|
||||
|
||||
when N_Op_Subtract =>
|
||||
if Typc = 'F' then
|
||||
Func := RE_Sub_F;
|
||||
else
|
||||
Func := RE_Sub_G;
|
||||
end if;
|
||||
|
||||
when others =>
|
||||
Func := RE_Null;
|
||||
raise Program_Error;
|
||||
|
||||
end case;
|
||||
|
||||
Args := New_List;
|
||||
|
||||
if Nkind (N) in N_Binary_Op then
|
||||
Append_To (Args,
|
||||
Convert_To (Atyp, Left_Opnd (N)));
|
||||
end if;
|
||||
|
||||
Append_To (Args,
|
||||
Convert_To (Atyp, Right_Opnd (N)));
|
||||
|
||||
Rewrite (N,
|
||||
Convert_To (Typ,
|
||||
Make_Function_Call (Loc,
|
||||
Name => New_Occurrence_Of (RTE (Func), Loc),
|
||||
Parameter_Associations => Args)));
|
||||
|
||||
Analyze_And_Resolve (N, Typ, Suppress => All_Checks);
|
||||
end Expand_Vax_Arith;
|
||||
|
||||
---------------------------
|
||||
-- Expand_Vax_Comparison --
|
||||
---------------------------
|
||||
|
||||
procedure Expand_Vax_Comparison (N : Node_Id) is
|
||||
Loc : constant Source_Ptr := Sloc (N);
|
||||
Typ : constant Entity_Id := Base_Type (Etype (Left_Opnd (N)));
|
||||
Typc : Character;
|
||||
Func : RE_Id;
|
||||
Atyp : Entity_Id;
|
||||
Revrs : Boolean := False;
|
||||
Args : List_Id;
|
||||
|
||||
begin
|
||||
-- Get arithmetic type, note that we do D stuff in G
|
||||
|
||||
if Digits_Value (Typ) = VAXFF_Digits then
|
||||
Typc := 'F';
|
||||
Atyp := RTE (RE_F);
|
||||
else
|
||||
Typc := 'G';
|
||||
Atyp := RTE (RE_G);
|
||||
end if;
|
||||
|
||||
case Nkind (N) is
|
||||
|
||||
when N_Op_Eq =>
|
||||
if Typc = 'F' then
|
||||
Func := RE_Eq_F;
|
||||
else
|
||||
Func := RE_Eq_G;
|
||||
end if;
|
||||
|
||||
when N_Op_Ge =>
|
||||
if Typc = 'F' then
|
||||
Func := RE_Le_F;
|
||||
else
|
||||
Func := RE_Le_G;
|
||||
end if;
|
||||
|
||||
Revrs := True;
|
||||
|
||||
when N_Op_Gt =>
|
||||
if Typc = 'F' then
|
||||
Func := RE_Lt_F;
|
||||
else
|
||||
Func := RE_Lt_G;
|
||||
end if;
|
||||
|
||||
Revrs := True;
|
||||
|
||||
when N_Op_Le =>
|
||||
if Typc = 'F' then
|
||||
Func := RE_Le_F;
|
||||
else
|
||||
Func := RE_Le_G;
|
||||
end if;
|
||||
|
||||
when N_Op_Lt =>
|
||||
if Typc = 'F' then
|
||||
Func := RE_Lt_F;
|
||||
else
|
||||
Func := RE_Lt_G;
|
||||
end if;
|
||||
|
||||
when N_Op_Ne =>
|
||||
if Typc = 'F' then
|
||||
Func := RE_Ne_F;
|
||||
else
|
||||
Func := RE_Ne_G;
|
||||
end if;
|
||||
|
||||
when others =>
|
||||
Func := RE_Null;
|
||||
raise Program_Error;
|
||||
|
||||
end case;
|
||||
|
||||
if not Revrs then
|
||||
Args := New_List (
|
||||
Convert_To (Atyp, Left_Opnd (N)),
|
||||
Convert_To (Atyp, Right_Opnd (N)));
|
||||
|
||||
else
|
||||
Args := New_List (
|
||||
Convert_To (Atyp, Right_Opnd (N)),
|
||||
Convert_To (Atyp, Left_Opnd (N)));
|
||||
end if;
|
||||
|
||||
Rewrite (N,
|
||||
Make_Function_Call (Loc,
|
||||
Name => New_Occurrence_Of (RTE (Func), Loc),
|
||||
Parameter_Associations => Args));
|
||||
|
||||
Analyze_And_Resolve (N, Standard_Boolean, Suppress => All_Checks);
|
||||
end Expand_Vax_Comparison;
|
||||
|
||||
---------------------------
|
||||
-- Expand_Vax_Conversion --
|
||||
---------------------------
|
||||
|
||||
procedure Expand_Vax_Conversion (N : Node_Id) is
|
||||
Loc : constant Source_Ptr := Sloc (N);
|
||||
Expr : constant Node_Id := Expression (N);
|
||||
S_Typ : constant Entity_Id := Base_Type (Etype (Expr));
|
||||
T_Typ : constant Entity_Id := Base_Type (Etype (N));
|
||||
|
||||
CallS : RE_Id;
|
||||
CallT : RE_Id;
|
||||
Func : RE_Id;
|
||||
|
||||
function Call_Type (T : Entity_Id; Otyp : Entity_Id) return RE_Id;
|
||||
-- Given one of the two types T, determines the corresponding call
|
||||
-- type, i.e. the type to be used for the call (or the result of
|
||||
-- the call). The actual operand is converted to (or from) this type.
|
||||
-- Otyp is the other type, which is useful in figuring out the result.
|
||||
-- The result returned is the RE_Id value for the type entity.
|
||||
|
||||
function Equivalent_Integer_Type (T : Entity_Id) return Entity_Id;
|
||||
-- Find the predefined integer type that has the same size as the
|
||||
-- fixed-point type T, for use in fixed/float conversions.
|
||||
|
||||
---------------
|
||||
-- Call_Type --
|
||||
---------------
|
||||
|
||||
function Call_Type (T : Entity_Id; Otyp : Entity_Id) return RE_Id is
|
||||
begin
|
||||
-- Vax float formats
|
||||
|
||||
if Vax_Float (T) then
|
||||
if Digits_Value (T) = VAXFF_Digits then
|
||||
return RE_F;
|
||||
|
||||
elsif Digits_Value (T) = VAXGF_Digits then
|
||||
return RE_G;
|
||||
|
||||
-- For D_Float, leave it as D float if the other operand is
|
||||
-- G_Float, since this is the one conversion that is properly
|
||||
-- supported for D_Float, but otherwise, use G_Float.
|
||||
|
||||
else pragma Assert (Digits_Value (T) = VAXDF_Digits);
|
||||
|
||||
if Vax_Float (Otyp)
|
||||
and then Digits_Value (Otyp) = VAXGF_Digits
|
||||
then
|
||||
return RE_D;
|
||||
else
|
||||
return RE_G;
|
||||
end if;
|
||||
end if;
|
||||
|
||||
-- For all discrete types, use 64-bit integer
|
||||
|
||||
elsif Is_Discrete_Type (T) then
|
||||
return RE_Q;
|
||||
|
||||
-- For all real types (other than Vax float format), we use the
|
||||
-- IEEE float-type which corresponds in length to the other type
|
||||
-- (which is Vax Float).
|
||||
|
||||
else pragma Assert (Is_Real_Type (T));
|
||||
|
||||
if Digits_Value (Otyp) = VAXFF_Digits then
|
||||
return RE_S;
|
||||
else
|
||||
return RE_T;
|
||||
end if;
|
||||
end if;
|
||||
end Call_Type;
|
||||
|
||||
-------------------------------------------------
|
||||
-- Expand_Multiply_Fixed_By_Fixed_Giving_Fixed --
|
||||
-------------------------------------------------
|
||||
|
||||
function Equivalent_Integer_Type (T : Entity_Id) return Entity_Id is
|
||||
begin
|
||||
if Esize (T) = Esize (Standard_Long_Long_Integer) then
|
||||
return Standard_Long_Long_Integer;
|
||||
elsif Esize (T) = Esize (Standard_Long_Integer) then
|
||||
return Standard_Long_Integer;
|
||||
else
|
||||
return Standard_Integer;
|
||||
end if;
|
||||
end Equivalent_Integer_Type;
|
||||
|
||||
-- Start of processing for Expand_Vax_Conversion;
|
||||
|
||||
begin
|
||||
-- If input and output are the same Vax type, we change the
|
||||
-- conversion to be an unchecked conversion and that's it.
|
||||
|
||||
if Vax_Float (S_Typ) and then Vax_Float (T_Typ)
|
||||
and then Digits_Value (S_Typ) = Digits_Value (T_Typ)
|
||||
then
|
||||
Rewrite (N,
|
||||
Unchecked_Convert_To (T_Typ, Expr));
|
||||
|
||||
-- Case of conversion of fixed-point type to Vax_Float type
|
||||
|
||||
elsif Is_Fixed_Point_Type (S_Typ) then
|
||||
|
||||
-- If Conversion_OK set, then we introduce an intermediate IEEE
|
||||
-- target type since we are expecting the code generator to handle
|
||||
-- the case of integer to IEEE float.
|
||||
|
||||
if Conversion_OK (N) then
|
||||
Rewrite (N,
|
||||
Convert_To (T_Typ, OK_Convert_To (Universal_Real, Expr)));
|
||||
|
||||
-- Otherwise, convert the scaled integer value to the target type,
|
||||
-- and multiply by 'Small of type.
|
||||
|
||||
else
|
||||
Rewrite (N,
|
||||
Make_Op_Multiply (Loc,
|
||||
Left_Opnd =>
|
||||
Make_Type_Conversion (Loc,
|
||||
Subtype_Mark => New_Occurrence_Of (T_Typ, Loc),
|
||||
Expression =>
|
||||
Unchecked_Convert_To (
|
||||
Equivalent_Integer_Type (S_Typ), Expr)),
|
||||
Right_Opnd =>
|
||||
Make_Real_Literal (Loc, Realval => Small_Value (S_Typ))));
|
||||
end if;
|
||||
|
||||
-- Case of conversion of Vax_Float type to fixed-point type
|
||||
|
||||
elsif Is_Fixed_Point_Type (T_Typ) then
|
||||
|
||||
-- If Conversion_OK set, then we introduce an intermediate IEEE
|
||||
-- target type, since we are expecting the code generator to handle
|
||||
-- the case of IEEE float to integer.
|
||||
|
||||
if Conversion_OK (N) then
|
||||
Rewrite (N,
|
||||
OK_Convert_To (T_Typ, Convert_To (Universal_Real, Expr)));
|
||||
|
||||
-- Otherwise, multiply value by 'small of type, and convert to the
|
||||
-- corresponding integer type.
|
||||
|
||||
else
|
||||
Rewrite (N,
|
||||
Unchecked_Convert_To (T_Typ,
|
||||
Make_Type_Conversion (Loc,
|
||||
Subtype_Mark =>
|
||||
New_Occurrence_Of (Equivalent_Integer_Type (T_Typ), Loc),
|
||||
Expression =>
|
||||
Make_Op_Multiply (Loc,
|
||||
Left_Opnd => Expr,
|
||||
Right_Opnd =>
|
||||
Make_Real_Literal (Loc,
|
||||
Realval => Ureal_1 / Small_Value (T_Typ))))));
|
||||
end if;
|
||||
|
||||
-- All other cases
|
||||
|
||||
else
|
||||
-- Compute types for call
|
||||
|
||||
CallS := Call_Type (S_Typ, T_Typ);
|
||||
CallT := Call_Type (T_Typ, S_Typ);
|
||||
|
||||
-- Get function and its types
|
||||
|
||||
if CallS = RE_D and then CallT = RE_G then
|
||||
Func := RE_D_To_G;
|
||||
|
||||
elsif CallS = RE_G and then CallT = RE_D then
|
||||
Func := RE_G_To_D;
|
||||
|
||||
elsif CallS = RE_G and then CallT = RE_F then
|
||||
Func := RE_G_To_F;
|
||||
|
||||
elsif CallS = RE_F and then CallT = RE_G then
|
||||
Func := RE_F_To_G;
|
||||
|
||||
elsif CallS = RE_F and then CallT = RE_S then
|
||||
Func := RE_F_To_S;
|
||||
|
||||
elsif CallS = RE_S and then CallT = RE_F then
|
||||
Func := RE_S_To_F;
|
||||
|
||||
elsif CallS = RE_G and then CallT = RE_T then
|
||||
Func := RE_G_To_T;
|
||||
|
||||
elsif CallS = RE_T and then CallT = RE_G then
|
||||
Func := RE_T_To_G;
|
||||
|
||||
elsif CallS = RE_F and then CallT = RE_Q then
|
||||
Func := RE_F_To_Q;
|
||||
|
||||
elsif CallS = RE_Q and then CallT = RE_F then
|
||||
Func := RE_Q_To_F;
|
||||
|
||||
elsif CallS = RE_G and then CallT = RE_Q then
|
||||
Func := RE_G_To_Q;
|
||||
|
||||
else pragma Assert (CallS = RE_Q and then CallT = RE_G);
|
||||
Func := RE_Q_To_G;
|
||||
end if;
|
||||
|
||||
Rewrite (N,
|
||||
Convert_To (T_Typ,
|
||||
Make_Function_Call (Loc,
|
||||
Name => New_Occurrence_Of (RTE (Func), Loc),
|
||||
Parameter_Associations => New_List (
|
||||
Convert_To (RTE (CallS), Expr)))));
|
||||
end if;
|
||||
|
||||
Analyze_And_Resolve (N, T_Typ, Suppress => All_Checks);
|
||||
end Expand_Vax_Conversion;
|
||||
|
||||
-------------------------------
|
||||
-- Expand_Vax_Foreign_Return --
|
||||
-------------------------------
|
||||
|
||||
procedure Expand_Vax_Foreign_Return (N : Node_Id) is
|
||||
Loc : constant Source_Ptr := Sloc (N);
|
||||
Typ : constant Entity_Id := Base_Type (Etype (N));
|
||||
Func : RE_Id;
|
||||
Args : List_Id;
|
||||
Atyp : Entity_Id;
|
||||
Rtyp : constant Entity_Id := Etype (N);
|
||||
|
||||
begin
|
||||
if Digits_Value (Typ) = VAXFF_Digits then
|
||||
Func := RE_Return_F;
|
||||
Atyp := RTE (RE_F);
|
||||
elsif Digits_Value (Typ) = VAXDF_Digits then
|
||||
Func := RE_Return_D;
|
||||
Atyp := RTE (RE_D);
|
||||
else pragma Assert (Digits_Value (Typ) = VAXGF_Digits);
|
||||
Func := RE_Return_G;
|
||||
Atyp := RTE (RE_G);
|
||||
end if;
|
||||
|
||||
Args := New_List (Convert_To (Atyp, N));
|
||||
|
||||
Rewrite (N,
|
||||
Convert_To (Rtyp,
|
||||
Make_Function_Call (Loc,
|
||||
Name => New_Occurrence_Of (RTE (Func), Loc),
|
||||
Parameter_Associations => Args)));
|
||||
|
||||
Analyze_And_Resolve (N, Typ, Suppress => All_Checks);
|
||||
end Expand_Vax_Foreign_Return;
|
||||
|
||||
--------------------------------
|
||||
-- Vax_Real_Literal_As_Signed --
|
||||
--------------------------------
|
||||
|
||||
function Get_Vax_Real_Literal_As_Signed (N : Node_Id) return Uint is
|
||||
Btyp : constant Entity_Id :=
|
||||
Base_Type (Underlying_Type (Etype (N)));
|
||||
|
||||
Value : constant Ureal := Realval (N);
|
||||
Negative : Boolean;
|
||||
Fraction : UI;
|
||||
Exponent : UI;
|
||||
Res : UI;
|
||||
|
||||
Exponent_Size : Uint;
|
||||
-- Number of bits for the exponent
|
||||
|
||||
Fraction_Size : Uint;
|
||||
-- Number of bits for the fraction
|
||||
|
||||
Uintp_Mark : constant Uintp.Save_Mark := Mark;
|
||||
-- Use the mark & release feature to delete temporaries
|
||||
begin
|
||||
-- Extract the sign now
|
||||
|
||||
Negative := UR_Is_Negative (Value);
|
||||
|
||||
-- Decompose the number
|
||||
|
||||
Decompose_Int (Btyp, abs Value, Fraction, Exponent, Round_Even);
|
||||
|
||||
-- Number of bits for the fraction, leading fraction bit is implicit
|
||||
|
||||
Fraction_Size := Machine_Mantissa_Value (Btyp) - Int'(1);
|
||||
|
||||
-- Number of bits for the exponent (one bit for the sign)
|
||||
|
||||
Exponent_Size := RM_Size (Btyp) - Fraction_Size - Int'(1);
|
||||
|
||||
if Fraction = Uint_0 then
|
||||
-- Handle zero
|
||||
|
||||
Res := Uint_0;
|
||||
|
||||
elsif Exponent <= -(Uint_2 ** (Exponent_Size - 1)) then
|
||||
-- Underflow
|
||||
|
||||
Res := Uint_0;
|
||||
else
|
||||
-- Check for overflow
|
||||
|
||||
pragma Assert (Exponent < Uint_2 ** (Exponent_Size - 1));
|
||||
|
||||
-- MSB of the fraction must be 1
|
||||
|
||||
pragma Assert (Fraction / Uint_2 ** Fraction_Size = Uint_1);
|
||||
|
||||
-- Remove the redudant most significant fraction bit
|
||||
|
||||
Fraction := Fraction - Uint_2 ** Fraction_Size;
|
||||
|
||||
-- Build the fraction part. Note that this field is in mixed
|
||||
-- endianness: words are stored using little endianness, while bytes
|
||||
-- in words are stored using big endianness.
|
||||
|
||||
Res := Uint_0;
|
||||
for I in 1 .. UI_To_Int (RM_Size (Btyp)) / 16 loop
|
||||
Res := (Res * (Uint_2 ** 16)) + (Fraction mod (Uint_2 ** 16));
|
||||
Fraction := Fraction / (Uint_2 ** 16);
|
||||
end loop;
|
||||
|
||||
-- The sign bit
|
||||
|
||||
if Negative then
|
||||
Res := Res + Int (2**15);
|
||||
end if;
|
||||
|
||||
-- The exponent
|
||||
|
||||
Res := Res + (Exponent + Uint_2 ** (Exponent_Size - 1))
|
||||
* Uint_2 ** (15 - Exponent_Size);
|
||||
|
||||
-- Until now, we have created an unsigned number, but an underlying
|
||||
-- type is a signed type. Convert to a signed number to avoid
|
||||
-- overflow in gigi.
|
||||
|
||||
if Res >= Uint_2 ** (Exponent_Size + Fraction_Size) then
|
||||
Res := Res - Uint_2 ** (Exponent_Size + Fraction_Size + 1);
|
||||
end if;
|
||||
end if;
|
||||
|
||||
Release_And_Save (Uintp_Mark, Res);
|
||||
|
||||
return Res;
|
||||
end Get_Vax_Real_Literal_As_Signed;
|
||||
|
||||
----------------------
|
||||
-- Expand_Vax_Valid --
|
||||
----------------------
|
||||
|
||||
procedure Expand_Vax_Valid (N : Node_Id) is
|
||||
Loc : constant Source_Ptr := Sloc (N);
|
||||
Pref : constant Node_Id := Prefix (N);
|
||||
Ptyp : constant Entity_Id := Root_Type (Etype (Pref));
|
||||
Rtyp : constant Entity_Id := Etype (N);
|
||||
Vtyp : RE_Id;
|
||||
Func : RE_Id;
|
||||
|
||||
begin
|
||||
if Digits_Value (Ptyp) = VAXFF_Digits then
|
||||
Func := RE_Valid_F;
|
||||
Vtyp := RE_F;
|
||||
elsif Digits_Value (Ptyp) = VAXDF_Digits then
|
||||
Func := RE_Valid_D;
|
||||
Vtyp := RE_D;
|
||||
else pragma Assert (Digits_Value (Ptyp) = VAXGF_Digits);
|
||||
Func := RE_Valid_G;
|
||||
Vtyp := RE_G;
|
||||
end if;
|
||||
|
||||
Rewrite (N,
|
||||
Convert_To (Rtyp,
|
||||
Make_Function_Call (Loc,
|
||||
Name => New_Occurrence_Of (RTE (Func), Loc),
|
||||
Parameter_Associations => New_List (
|
||||
Convert_To (RTE (Vtyp), Pref)))));
|
||||
|
||||
Analyze_And_Resolve (N);
|
||||
end Expand_Vax_Valid;
|
||||
|
||||
end Exp_VFpt;
|
|
@ -1,67 +0,0 @@
|
|||
------------------------------------------------------------------------------
|
||||
-- --
|
||||
-- GNAT COMPILER COMPONENTS --
|
||||
-- --
|
||||
-- E X P _ V F P T --
|
||||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
-- ware Foundation; either version 3, or (at your option) any later ver- --
|
||||
-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
|
||||
-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
|
||||
-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
|
||||
-- for more details. You should have received a copy of the GNU General --
|
||||
-- Public License distributed with GNAT; see file COPYING3. If not, go to --
|
||||
-- http://www.gnu.org/licenses for a complete copy of the license. --
|
||||
-- --
|
||||
-- GNAT was originally developed by the GNAT team at New York University. --
|
||||
-- Extensive contributions were provided by Ada Core Technologies Inc. --
|
||||
-- --
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
-- This package contains specialized routines for handling the expansion
|
||||
-- of arithmetic and conversion operations involving Vax format floating-
|
||||
-- point formats as used on the Vax and the Alpha and the ia64.
|
||||
|
||||
with Types; use Types;
|
||||
with Uintp; use Uintp;
|
||||
|
||||
package Exp_VFpt is
|
||||
|
||||
procedure Expand_Vax_Arith (N : Node_Id);
|
||||
-- The node N is an arithmetic node (N_Op_Abs, N_Op_Add, N_Op_Sub,
|
||||
-- N_Op_Div, N_Op_Mul, N_Op_Minus where the operands are in Vax float
|
||||
-- format. This procedure expands the necessary call.
|
||||
|
||||
procedure Expand_Vax_Comparison (N : Node_Id);
|
||||
-- The node N is an arithmetic comparison node where the types to be
|
||||
-- compared are in Vax float format. This procedure expands the necessary
|
||||
-- call.
|
||||
|
||||
procedure Expand_Vax_Conversion (N : Node_Id);
|
||||
-- The node N is a type conversion node where either the source or the
|
||||
-- target type, or both, are Vax floating-point type.
|
||||
|
||||
procedure Expand_Vax_Foreign_Return (N : Node_Id);
|
||||
-- The node N is a call to a foreign function that returns a Vax float
|
||||
-- value in a floating point register. Wraps the call in an asm stub
|
||||
-- that moves the return value to an integer location on Alpha/VMS,
|
||||
-- noop everywhere else.
|
||||
|
||||
function Get_Vax_Real_Literal_As_Signed (N : Node_Id) return Uint;
|
||||
-- Get the Vax binary representation of a real literal whose type is a Vax
|
||||
-- floating-point type. This is used by gigi. Previously we expanded real
|
||||
-- literal to a call to a LIB$OTS routine that performed the conversion.
|
||||
-- This worked correctly from a funcional point of view, but was
|
||||
-- inefficient and generated huge functions for aggregate initializations.
|
||||
|
||||
procedure Expand_Vax_Valid (N : Node_Id);
|
||||
-- The node N is an attribute reference node for the Valid attribute where
|
||||
-- the prefix is of a Vax floating-point type. This procedure expands the
|
||||
-- necessary call for the validity test.
|
||||
|
||||
end Exp_VFpt;
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 2002-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2002-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 2008-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2008-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 2008-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2008-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 2002-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2002-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 2002-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2002-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -281,7 +281,6 @@ GNAT_ADA_OBJS = \
|
|||
ada/exp_strm.o \
|
||||
ada/exp_tss.o \
|
||||
ada/exp_util.o \
|
||||
ada/exp_vfpt.o \
|
||||
ada/expander.o \
|
||||
ada/fmap.o \
|
||||
ada/fname-uf.o \
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2005 AdaCore --
|
||||
-- Copyright (C) 1992-2014, AdaCore --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -32,7 +32,6 @@ with Debug; use Debug;
|
|||
with Elists;
|
||||
with Errout; use Errout;
|
||||
with Exp_CG;
|
||||
with Exp_Ch6; use Exp_Ch6;
|
||||
with Fmap;
|
||||
with Fname; use Fname;
|
||||
with Fname.UF; use Fname.UF;
|
||||
|
@ -1276,7 +1275,7 @@ begin
|
|||
Errout.Finalize (Last_Call => True);
|
||||
Errout.Output_Messages;
|
||||
List_Rep_Info (Ttypes.Bytes_Big_Endian);
|
||||
List_Inlining_Info;
|
||||
Inline.List_Inlining_Info;
|
||||
|
||||
-- Only write the library if the backend did not generate any error
|
||||
-- messages. Otherwise signal errors to the driver program so that
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
-- B o d y --
|
||||
-- (AIX version) --
|
||||
-- --
|
||||
-- Copyright (C) 2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2009-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
-- B o d y --
|
||||
-- (GNU version) --
|
||||
-- --
|
||||
-- Copyright (C) 2009, Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2009-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
-- B o d y --
|
||||
-- (Windows version) --
|
||||
-- --
|
||||
-- Copyright (C) 2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2009-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2009-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
1214
gcc/ada/inline.adb
1214
gcc/ada/inline.adb
File diff suppressed because it is too large
Load diff
|
@ -134,18 +134,6 @@ package Inline is
|
|||
-- The following should be initialized in an init call in Frontend, we
|
||||
-- have thoughts of making the frontend reusable in future ???
|
||||
|
||||
Inlined_Calls : Elist_Id := No_Elist;
|
||||
-- List of frontend inlined calls
|
||||
|
||||
Backend_Calls : Elist_Id := No_Elist;
|
||||
-- List of inline calls passed to the backend
|
||||
|
||||
Backend_Inlined_Subps : Elist_Id := No_Elist;
|
||||
-- List of subprograms inlined by the backend
|
||||
|
||||
Backend_Not_Inlined_Subps : Elist_Id := No_Elist;
|
||||
-- List of subprograms that cannot be inlined by the backend
|
||||
|
||||
-----------------
|
||||
-- Subprograms --
|
||||
-----------------
|
||||
|
@ -171,7 +159,7 @@ package Inline is
|
|||
-- At end of compilation, analyze the bodies of all units that contain
|
||||
-- inlined subprograms that are actually called.
|
||||
|
||||
procedure Build_Body_To_Inline (N : Node_Id; Subp : Entity_Id);
|
||||
procedure Build_Body_To_Inline (N : Node_Id; Spec_Id : Entity_Id);
|
||||
-- If a subprogram has pragma Inline and inlining is active, use generic
|
||||
-- machinery to build an unexpanded body for the subprogram. This body is
|
||||
-- subsequently used for inline expansions at call sites. If subprogram can
|
||||
|
@ -189,16 +177,17 @@ package Inline is
|
|||
-- This procedure is called if the node N, an instance of a call to
|
||||
-- subprogram Subp, cannot be inlined. Msg is the message to be issued,
|
||||
-- which ends with ? (it does not end with ?p?, this routine takes care of
|
||||
-- the need to change ? to ?p?). Temporarily the behavior of this routine
|
||||
-- depends on the value of -gnatd.k:
|
||||
-- the need to change ? to ?p?). The behavior of this routine depends on
|
||||
-- the value of Back_End_Inlining:
|
||||
--
|
||||
-- * If -gnatd.k is not set (ie. old inlining model) then if Subp has
|
||||
-- a pragma Always_Inlined, then an error message is issued (by
|
||||
-- removing the last character of Msg). If Subp is not Always_Inlined,
|
||||
-- then a warning is issued if the flag Ineffective_Inline_Warnings
|
||||
-- is set, adding ?p to the msg, and if not, the call has no effect.
|
||||
-- * If Back_End_Inlining is not set (ie. legacy frontend inlining model)
|
||||
-- then if Subp has a pragma Always_Inlined, then an error message is
|
||||
-- issued (by removing the last character of Msg). If Subp is not
|
||||
-- Always_Inlined, then a warning is issued if the flag Ineffective_
|
||||
-- Inline_Warnings is set, adding ?p to the msg, and if not, the call
|
||||
-- has no effect.
|
||||
--
|
||||
-- * If -gnatd.k is set (ie. new inlining model) then:
|
||||
-- * If Back_End_Inlining is set then:
|
||||
-- - If Is_Serious is true, then an error is reported (by removing the
|
||||
-- last character of Msg);
|
||||
--
|
||||
|
@ -214,7 +203,7 @@ package Inline is
|
|||
-- flag Ineffective_Inline_Warnings is set (adding p?); otherwise
|
||||
-- no effect since inlining may be performed by the backend.
|
||||
|
||||
procedure Check_And_Build_Body_To_Inline
|
||||
procedure Check_And_Split_Unconstrained_Function
|
||||
(N : Node_Id;
|
||||
Spec_Id : Entity_Id;
|
||||
Body_Id : Entity_Id);
|
||||
|
@ -254,6 +243,10 @@ package Inline is
|
|||
-- Check a list of statements, Stats, that make inlining of Subp not
|
||||
-- worthwhile, including any tasking statement, nested at any level.
|
||||
|
||||
procedure List_Inlining_Info;
|
||||
-- Generate listing of calls inlined by the frontend plus listing of
|
||||
-- calls to inline subprograms passed to the backend.
|
||||
|
||||
procedure Register_Backend_Call (N : Node_Id);
|
||||
-- Append N to the list Backend_Calls
|
||||
|
||||
|
|
|
@ -6948,15 +6948,17 @@ package body Make is
|
|||
|
||||
procedure List_Bad_Compilations is
|
||||
begin
|
||||
for J in Bad_Compilation.First .. Bad_Compilation.Last loop
|
||||
if Bad_Compilation.Table (J).File = No_File then
|
||||
null;
|
||||
elsif not Bad_Compilation.Table (J).Found then
|
||||
Inform (Bad_Compilation.Table (J).File, "not found");
|
||||
else
|
||||
Inform (Bad_Compilation.Table (J).File, "compilation error");
|
||||
end if;
|
||||
end loop;
|
||||
if not Debug.Debug_Flag_S then
|
||||
for J in Bad_Compilation.First .. Bad_Compilation.Last loop
|
||||
if Bad_Compilation.Table (J).File = No_File then
|
||||
null;
|
||||
elsif not Bad_Compilation.Table (J).Found then
|
||||
Inform (Bad_Compilation.Table (J).File, "not found");
|
||||
else
|
||||
Inform (Bad_Compilation.Table (J).File, "compilation error");
|
||||
end if;
|
||||
end loop;
|
||||
end if;
|
||||
end List_Bad_Compilations;
|
||||
|
||||
-----------------
|
||||
|
|
|
@ -777,7 +777,7 @@ package body Makeutl is
|
|||
Flush_Messages : Boolean := True)
|
||||
is
|
||||
begin
|
||||
if Flush_Messages then
|
||||
if Flush_Messages and then not Debug.Debug_Flag_S then
|
||||
if Total_Errors_Detected /= 0 or else Warnings_Detected /= 0 then
|
||||
Errutil.Finalize;
|
||||
end if;
|
||||
|
@ -806,8 +806,13 @@ package body Makeutl is
|
|||
|
||||
if S'Length > 0 then
|
||||
if Exit_Code /= E_Success then
|
||||
Osint.Fail (S);
|
||||
else
|
||||
if Debug.Debug_Flag_S then
|
||||
Osint.Exit_Program (E_Fatal);
|
||||
else
|
||||
Osint.Fail (S);
|
||||
end if;
|
||||
|
||||
elsif not Debug.Debug_Flag_S then
|
||||
Write_Str (S);
|
||||
end if;
|
||||
end if;
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 2002-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2002-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 2002-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2002-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 2002-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2002-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 2002-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2002-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 2002-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2002-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 2002-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2002-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 2002-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2002-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 2002-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2002-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 2006-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2006-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNARL is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2012 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 2002-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2002-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1996-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1996-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1996-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1996-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 2001-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2001-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- This specification is derived from the Ada Reference Manual for use with --
|
||||
-- GNAT. The copyright notice above, and the license provisions that follow --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1996-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1996-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
-- B o d y --
|
||||
-- (Compiler Interface) --
|
||||
-- --
|
||||
-- Copyright (C) 1998-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1998-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 2001-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2001-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNARL is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 2001-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2001-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNARL is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 2001-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2001-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNARL is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 2001-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2001-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNARL is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 2001-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2001-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNARL is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 2002-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 2002-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1998-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1998-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNARL is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -3589,7 +3589,7 @@ package body Sem_Ch6 is
|
|||
and then Ekind (Spec_Id) = E_Function
|
||||
and then Returns_Unconstrained_Type (Spec_Id)
|
||||
then
|
||||
Check_And_Build_Body_To_Inline (N, Spec_Id, Body_Id);
|
||||
Check_And_Split_Unconstrained_Function (N, Spec_Id, Body_Id);
|
||||
|
||||
else
|
||||
declare
|
||||
|
|
|
@ -1259,8 +1259,6 @@ package Sinfo is
|
|||
-- Float_Truncate (Flag11-Sem)
|
||||
-- A flag present in type conversion nodes. This is used for float to
|
||||
-- integer conversions where truncation is required rather than rounding.
|
||||
-- Note that Gigi does not handle type conversions from real to integer
|
||||
-- with rounding (see Expand_N_Type_Conversion).
|
||||
|
||||
-- Forwards_OK (Flag5-Sem)
|
||||
-- A flag present in the N_Assignment_Statement node. It is used only
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2009 Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
|
Loading…
Add table
Reference in a new issue