# DP: Revert the changes made to allow bootstrapping with -fno-inline. # DP: We allow inlining during bootstrap and this change breaks aliversion compatibility # DP: with earlier uploads of libgnatvsn5. This patch shall be removed in the next # DP: major version of GNAT. Index: b/src/gcc/ada/uintp.adb =================================================================== --- a/src/gcc/ada/uintp.adb +++ b/src/gcc/ada/uintp.adb @@ -171,6 +171,22 @@ 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 -- ------------ Index: b/src/gcc/ada/uintp.ads =================================================================== --- a/src/gcc/ada/uintp.ads +++ b/src/gcc/ada/uintp.ads @@ -90,18 +90,6 @@ 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 -- ----------------- @@ -264,22 +252,6 @@ 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 -- --------------------- @@ -527,6 +499,18 @@ 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)