re PR ada/63225 (ada bootstrap failure when -fno-inline in STAGE1_CFLAGS)

PR ada/63225
	* uintp.adb (Vector_To_Uint): Move from here to...
	* uintp.ads (UI_Vector): Make public.
	(Vector_To_Uint): ...here.

Co-Authored-By: Alan Modra <amodra@gmail.com>

From-SVN: r216139
This commit is contained in:
Eric Botcazou 2014-10-13 08:19:45 +00:00 committed by Eric Botcazou
parent d4f5cd5e82
commit e7da0c235e
3 changed files with 36 additions and 28 deletions

View file

@ -1,3 +1,11 @@
2014-10-13 Eric Botcazou <ebotcazou@adacore.com>
Alan Modra <amodra@gmail.com>
PR ada/63225
* uintp.adb (Vector_To_Uint): Move from here to...
* uintp.ads (UI_Vector): Make public.
(Vector_To_Uint): ...here.
2014-10-10 Robert Dewar <dewar@adacore.com>
* freeze.adb, sem_attr.adb: Minor reformatting.

View file

@ -171,22 +171,6 @@ package body Uintp is
-- If Discard_Quotient is True, Quotient is set to No_Uint
-- If Discard_Remainder is True, Remainder is set to No_Uint
function Vector_To_Uint
(In_Vec : UI_Vector;
Negative : Boolean) return Uint;
-- Functions that calculate values in UI_Vectors, call this function to
-- create and return the Uint value. In_Vec contains the multiple precision
-- (Base) representation of a non-negative value. Leading zeroes are
-- permitted. Negative is set if the desired result is the negative of the
-- given value. The result will be either the appropriate directly
-- represented value, or a table entry in the proper canonical format is
-- created and returned.
--
-- Note that Init_Operand puts a signed value in the result vector, but
-- Vector_To_Uint is always presented with a non-negative value. The
-- processing of signs is something that is done by the caller before
-- calling Vector_To_Uint.
------------
-- Direct --
------------

View file

@ -90,6 +90,18 @@ package Uintp is
Uint_Minus_80 : constant Uint;
Uint_Minus_128 : constant Uint;
type UI_Vector is array (Pos range <>) of Int;
-- Vector containing the integer values of a Uint value
-- Note: An earlier version of this package used pointers of arrays of Ints
-- (dynamically allocated) for the Uint type. The change leads to a few
-- less natural idioms used throughout this code, but eliminates all uses
-- of the heap except for the table package itself. For example, Uint
-- parameters are often converted to UI_Vectors for internal manipulation.
-- This is done by creating the local UI_Vector using the function N_Digits
-- on the Uint to find the size needed for the vector, and then calling
-- Init_Operand to copy the values out of the table into the vector.
-----------------
-- Subprograms --
-----------------
@ -252,6 +264,22 @@ package Uintp is
-- function is used for capacity checks, and it can be one bit off
-- without affecting its usage.
function Vector_To_Uint
(In_Vec : UI_Vector;
Negative : Boolean) return Uint;
-- Functions that calculate values in UI_Vectors, call this function to
-- create and return the Uint value. In_Vec contains the multiple precision
-- (Base) representation of a non-negative value. Leading zeroes are
-- permitted. Negative is set if the desired result is the negative of the
-- given value. The result will be either the appropriate directly
-- represented value, or a table entry in the proper canonical format is
-- created and returned.
--
-- Note that Init_Operand puts a signed value in the result vector, but
-- Vector_To_Uint is always presented with a non-negative value. The
-- processing of signs is something that is done by the caller before
-- calling Vector_To_Uint.
---------------------
-- Output Routines --
---------------------
@ -494,18 +522,6 @@ private
-- UI_Vector is defined for this purpose and some internal subprograms
-- used for converting from one to the other are defined.
type UI_Vector is array (Pos range <>) of Int;
-- Vector containing the integer values of a Uint value
-- Note: An earlier version of this package used pointers of arrays of Ints
-- (dynamically allocated) for the Uint type. The change leads to a few
-- less natural idioms used throughout this code, but eliminates all uses
-- of the heap except for the table package itself. For example, Uint
-- parameters are often converted to UI_Vectors for internal manipulation.
-- This is done by creating the local UI_Vector using the function N_Digits
-- on the Uint to find the size needed for the vector, and then calling
-- Init_Operand to copy the values out of the table into the vector.
type Uint_Entry is record
Length : Pos;
-- Length of entry in Udigits table in digits (i.e. in words)