========================================================
Known problems in GNAT version 3.16a as of June 25, 2003
========================================================

Copyright (c) 2003, Ada Core Technologies

The following is a listing of known problems in release 3.16a. Except
where specifically noted, all these problems have been corrected in
the final release of the 3.16 technology, as well as in version 3.17w,
which means they are corrected in release 3.16a1 and in any wavefront
issued subsequent to the date above.

KP-316a-C602-001 ASIS Element_Span problem on private type definitions

  Problem:    Asis.Text.Element_Span returns a wrong result for
              A_Private_Type_Definition argument if the enclosing type
              declaration contains discriminants.

  Status:     This problem was fixed in 3.16a1 on 2003-06-03.

  Workaround: Get the span and the image of the enclosing type declaration
              and compute the span of the type definition manually

KP-316a-C530-003 ASIS Is_Equal blows up on Nil_Compilation_Unit

  Problem:    Asis.Compilation_Units.Is_Equal blows up is its second argument
              is Nil_Compilation_Unit, but its first argument is not
              Nil_Compilation_Unit.

  Status:     This problem was fixed in 3.16a1 on 2003-05-30.

  Workaround: Check if arguments of Is_Equal are Is_Nil, and do not apply
              Is_Equal if one of the arguments is Nil_Compilation_Unit

KP-316a-C530-002 ASIS Compilation_Unit_Span problem on private CU and subunits

  Problem:    Asis.Text.Compilation_Unit_Span returns the wrong beginning of
              the unit span in case if the unit does not contain a context
              clause and if it is either a private unit declaration or a
              subunit (the keywords 'private' or 'subunit' are not counted in
              the span).

  Status:     This problem was fixed in 3.16a1 on 2003-05-30.

  Workaround: Get images of the lines covering the beginning of the unit
              source and compute the location of the unit beginning manually.

KP-316a-C527-O16 ASIS Enumeration_Literal_Declarations fails on Wide_Character

  Problem:    Asis.Definitions.Enumeration_Literal_Declarations blows up on
              the definition of Standard.Wide_Character type.

  Status:     This problem was fixed in 3.16a1 on 2003-05-28.

  Workaround: If you can not avoid applying this query to the definition of
              Wide_Character, you may recompile ASIS with '-gnatp' option and
              then rebuild your tool.

KP-316a-C522-008 Problems in gnatelim with renaming

  Problem:    Eliminate pragmas may be generated by gnatelim for subprogram
              renamings and for subprogram declarations having the completion
              specified by a renaming-as-body. These pragmas may be wrong in
              the sense that they may conflict with subprograms which are
              called in the program.

  Status:     This problem was fixed in 3.16a1 on 2003-05-28.

  Workaround: Manually remove all the pragmas for renamings from the list of
              pragmas generated by gnatelim.

KP-316a-C521-003 ASIS Is_Renaming_As_Body may be wrong on attribute renamings

  Problem:    Asis.Extensions.Is_Renaming_As_Body query may return wrong
              results if its argument represents the subprogram renaming
              declaration which renames an attribute.

  Status:     This problem was fixed in 3.16a1 on 2003-05-28.

  Workaround: Analyze attribute renamings manually.

KP-316a-C516-008 ASIS Corresponding_Generic_Element fails on formal packages

  Problem:    Asis.Declarations.Corresponding_Generic_Element blows up if its
              argument is from the expanded generic code corresponding to a
              formal package.

  Status:     This problem was fixed in 3.16a1 on 2003-05-28.

  Workaround: Do not use Corresponding_Generic_Element when you are in the
              expanded formal package, use manual traversing instead

KP-316a-C507-011 Wrong renames entity printed by the debugger

  Problem:    GDB sometimes prints an incorrect value for a variable in
              a procedure. This occurs when the variable is a rename and
              another variable with the same but in a different procedure
              is also a rename.

  Status:     This problem was fixed in 3.16a1 on 2003-05-12.

  Workaround: Use the fully qualified name of the variable when trying
              to print its value.

KP-316a-C428-020 Visibility problem with formals of formal package

  Problem:    In the case of multiply nested instantiations, GNAT may
              incorrectly reject references to the formals of a formal
              package declared with a box, when the original generic
              compiles without error.

  Status:     This problem was fixed in 3.16a1 on 2003-05-01.

  Workaround: Introduce local declarations in the formal package that
              rename the formals, and refer to those declarations in
              the enclosing generic.

KP-316a-C417-001 Spurious warnings on attributes of generic index types

  Problem:    Compiler incorrectly constant-folds an attribute of of an array
              type declared within a generic when the index type is a formal
              discrete type of the generic unit. If the attribute appears
              within an expression, spurious warnings may result.

  Status:     The problem was fixed in 3.16a1 on 2003-04-18.

  Workaround: Apply the attribute to the index type rather than to the
              array type.

KP-316a-C415-013 Some Missing finalization for returned controlled array

  Problem:    When a function returns an array of controlled elements with
              controlled components, the finalization of the last element of
              the returned value is missing.

  Status:     This problem was fixed in 3.16a1 on 2003-04-18.

  Workaround: Use a procedure with an OUT parameter to return the value, or
              an allocated value, or manually perform the missing finalization.

KP-316a-C325-013 Debugger on HPUX cannot resume execution after interruption

  Problem:    Once stopped by using the interrupt button in GVD (or hitting
              Control-C in GDB), the debugger on HP/UX is unable to resume
              the execution of the application being debugged. The debugger
              reports an error saying that the program was "terminated with
              signal SIGINT" and that "The program no longer exists".

  Status:     This problem was fixed in 3.16a1 on 2003-02-13.

  Workaround: Use breakpoints to stop the execution of the program, instead
              of the interrupt button.

KP-316a-C325-008 Problem with nested discriminated record with rep clause

  Problem:    If a record representation clause is specified for a
              discriminated variant record and one field has a type which
              is also a discriminated record and is forced to a size that is
              not a multiple of a storage unit and the discriminant shares a
              storage unit with that field, some assignments may clobber
              the discriminant.

  Status:     This problem was fixed in 3.16a1 on 2003-04-03.

  Workaround: Avoid specifying a size that is not a multiple of a storage
              unit for the nested record.

KP-316a-C321-012 Spurious error on System.Storage_Elements

  Problem:    Compiler rejects a subprogram declaration when one of its
              formals is a homonym of a pure function declared in
              System_Storage_Elements, and there is a local variable
              with an address clause that names the formal.

  Status:     This problem was fixed in 3.16a1 on 2003-04-06

  Workaround: Change name of formal.

KP-316a-C319-007 /WARNING=UNITIALIZED on VMS cased gnatmake problem

  Problem:    The documented compiler qualifier /WARNING=UNITIALIZED
              when used as a GNAT MAKE qualifier was preventing
              gnatmake from working.

  Status:     This problem was fixed in 3.16a1 on 2003-05-05.

  Workaround: Specify /WARNING=UNITIALIZED in the compiler qualifier
              section only of the GNAT MAKE command.

KP-316a-C316-003 Extended proj sharing obj dir with proj with no source

  Problem:    An extended project was not allowed to have the same object
              directory as another project with no source used as a template.

  Status:     This problem was fixed in 3.16a1 on 2003-03-16.

  Workaround: Avoid sharing object directory between an extended project and
              any other project.

KP-316a-C313-003 Debugger problem printing infinite float values (x86-windows)

  Problem:    On x86-windows, the debugger was incorrectly printing infinite
              floating-point values as zero.

  Status:     This problem was fixed in 3.16a1 on 2003-03-13.

  Workaround: Write a small procedure that prints float values, and call it
              from GDB.

KP-316a-C312-025 Problem in gnatelim with renaming operations from predef lib

  Problem:    If gnatelim is used on source files containing renaming
              declarations for subprograms from the predefined library,
              then it may blow up.

  Status:     This problem was fixed in 3.16a1 on 2003-04-30.

  Workaround: Avoid such renamings in the code to be processed by gnatelim.
              directory.

KP-316a-C312-006 Program_Error from gnatlink for null string parameter

  Problem:    If an empty string parameter is passed as an argument to gnatlink
              then a Program_Error exception is raised.

  Status:     This problem was fixed in 3.16a1 on 2003-03-13.

  Workaround: Remove the empty argument from the command line.

KP-316a-C303-002 Gnatdist fails to build partitions

  Problem:    Gnatdist fails to build partitions with a message
              "cannot copy file ... to ...". This is due to the fact that
              some files already exist and are not properly overwritten
              by gnatdist.

  Status:     This problem was fixed in 3.16a1 on 2003-03-03.

  Workaround: Remove the "dsa" directory before rebuilding your project.

KP-316a-C227-009 Bad handling of default priority for environment task in HIE

  Problem:    When no priority is given to the environment task in the
              Ravenscar runtime of GNAT Pro HI-E, its priority is set to
              an invalid value which can lead to anomolous results.

  Status:     This problem was fixed in 3.16a1 on 2003-03-03.

  Workaround: Set the priority of the environment task with a pragma
              Priority in the main program.

KP-316a-C227-007 Compiler loops on discriminant of protected type, with -O1

  Problem:    Compiler goes into an infinite loop when applying a range
              check on an expression, one of whose operands is a discriminant
              of a protected type, if the unit is being compiled with some
              optimization.

  Status:     This problem was fixed in 3.16a1 on 2003-03-10.

  Workaround: Compile the unit without optimization, or introduce a
              variable to hold the value of the discriminant and use the
              variable in the offending expression.

KP-316a-C228-014 Windows resources documentation out of date

  Problem:    The documentation about Windows resources was not
              up to date and was listing a set of limitations that
              are not valid anymore.

  Status:     This problem was fixed in 3.16a1 on 2003-03-02.

  Workaround: Read the new section about Windows resources.

KP-316a-C224-008 Type extension in generic child unit

  Problem:    Compiler gives a spurious error on an instance of a generic
              child unit, when the unit extends a private type from a
              generic parent unit, the full view is a composite type, and
              the generic body has an aggregate for the type extension.

  Status:     This problem was fixed in 3.16a1 on 2003-02-25

  Workaround: Make the type non-private in the generic parent.

KP-316a-C224-001 tasking termination problem with ATCs on VMS

  Problem:    Using a "select then abort" (or another Asynchronous
              Transfert of Control) within a "select or terminate"
              could lead to a hang in soem specific circumstanves specific
              to the VMS port.

  Status:     This problem was fixed in 3.16a1 on 2003-05-26.

  Workaround: Avoid the use of ATCs in "select or terminate" alternative.

KP-316a-C218-003 ASIS Enclosing_Element problem on a discriminant part

  Problem:    Enclosing_Element may return a wrong result if the argument
              represents a discriminant part

  Status:     This problem was fixed in 3.16a1 on 2003-02-25.

  Workaround: Implement your own Enclosing_Element on the base of
              Traverse_Element.

KP-316a-C217-007 Using Stream_IO with FIFO files

  Problem:    Opening a Stream file in OUT mode for a Posix FIFO
              file fails at the first attempt to write.

  Status:     This problem was fixed in 3.16a1 on 2003-02-20.

  Workaround: Avoid the use of Stream_IO for such files, or obtain the
              latest version of a-ststio.adb.

KP-316a-C212-012 Library projects with many sources

  Problem:    In non quiet mode, when a library project file has too
              many sources, an internal buffer may overflow, when
              the list of object files in the library is displayed.

  Status:     This problem was fixed in 3.16a1 on 2003-05-05.

  Workaround: Invoke gnatmake with -q (quiet mode).

KP-316a-C212-008 Debugger hangs after setting an exception breakpoint

  Problem:    In the Tornado AE debugger, setting a breakpoint on
              a specific exception may cause it to hang indefinitely
              after having resumed the execution using the "continue"
              command. Another symptom of this problem is that the
              task being debugged is in the 'BREAK' state.

  Status:     This problem was fixed in 3.16a1 on 2003-02-28.

  Workaround: Use the tornado shell facility to get the task id of the
              application being debugged, and resume it using the
              "cont <task_id>" command.

KP-316a-C211-016 ASIS Enclosing_Element problem on a discrete range

  Problem:    Enclosing_Element may return a wrong result if the argument is
              A_Discrete_Simple_Expression_Range, it happens if it is possible
              to detect statically that the enclosing construct will raise an
              exception at run time

  Status:     This problem was fixed in 3.16a1 on 2003-02-12.

  Workaround: Implement your own Enclosing_Element on the base of
              Traverse_Element.

KP-316a-C210-028 Wrong 'Image value for '$' in enumeration type

  Problem:    If as user defined enumeration type contains the enumeration
              literal '$', then the Image of this value is wrong.

  Status:     This problem was fixed in 3.16a1 on 2003-02-12.

  Workaround: Test specifically for this value and manually provide the
              appropriate image string.

KP-316a-C210-026 ASIS Corresponding_Base_Entity problem on type conversions

  Problem:    Corresponding_Base_Entity blows up if the construct after the
              'renames' keyword is a type conversion

  Status:     This problem was fixed in 3.16a1 on 2003-02-12.

  Workaround: Before applying Corresponding_Base_Entity, use Renamed_Entity to
              check what constructs follows the 'renames' keyword. And if the
              result is of A_Type_Conversion kind, just use it as a result of
              Corresponding_Base_Entity applied to this renaming declaration.

KP-316a-C210-017 ASIS Corresponding_Name_Definition problem

  Problem:    Corresponding_Name_Definition may blow up if it is possible to
              define statically that the construct enclosing its argument will
              raise an exception.

  Status:     This problem was fixed in 3.16a1 on 2003-02-11.

  Workaround: Use other ASIS queries to compute the result of
              Corresponding_Name_Definition manually

KP-316a-C209-004 ASIS Enclosing_Element problem on A_Subtype_Indication

  Problem:    Enclosing_Element returns a wrong result if the argument is
              A_Subtype_Indication Element being a part of an allocation from
              subtype, and this allocation is a part of the expression in
              another allocation.

  Status:     This problem was fixed in 3.16a1 on 2003-02-10.

  Workaround: Implement your own Enclosing_Element on the base of
              Traverse_Element.

KP-316a-C208-003 ASIS Enclosing_Element problem on A_Range_Attribute

  Problem:    Enclosing_Element returns a wrong result if the argument is
              A_Range_Attribute Element being a part of the constraint in an
              object definition.

  Status:     This problem was fixed in 3.16a1 on 2003-02-09.

  Workaround: Implement your own Enclosing_Element on the base of
              Traverse_Element.

KP-316a-C207-008 ASIS Result_Profile problem on function renaming

  Problem:    Result_Profile returns a wrong result, if the argument is a
              function renaming, the renamed function is an attribute and the
              returned type is represented by an expanded name (the result
              returned by Result_Profile in this situation is of An_Identifier
              kind, but it should be of A_Selected_Component kind. This problem
              may also affect GNATPP.

  Status:     This problem was fixed in 3.16a1 on 2003-02-08.

  Workaround: Manually parse the text image of the enclosing renaming
              declaration.

KP-316a-C206-014 ASIS Function_Call_Parameters problem with renamed operators

  Problem:    Function_Call_Parameters blows up if the argument is an infix
              call to a renaming of a predefined operator.

  Status:     This problem was fixed in 3.16a1 on 2003-02-08.

  Workaround: Check the definition of the prefix of the function call, and if
              it is the renaming of a function-operator, either avoid using
              Function_Call_Parameters or try to get the needed information
              from manual parsing of the text image of the call. This problem
              may also affect GNATPP.

KP-316a-C205-009 ASIS Corresponding_Name_Definition problem

  Problem:    Corresponding_Name_Definition blows up on an identifier specific
              to a pragma (that is, having no definition at all) if this
              identifier is a part of other expression. This problem may also
              affect GNATPP.

  Status:     This problem was fixed in 3.16a1 on 2003-02-07.

  Workaround: Analyze the pragma name and parameters to decide if a given
              identifier is specific to a given pragma to avoid applying
              Corresponding_Name_Definition

KP-316a-C205-005 ASIS Corresponding_Body blows up on abstract subprograms

  Problem:    Corresponding_Body blows up if the argument represents an
              abstract subprogram declaration

  Status:     This problem was fixed in 3.16a1 on 2003-02-06.

  Workaround: Before applying Corresponding_Body use Trait_Kind to check is
              the argument is an abstract subprogram declaration (in this case
              Corresponding_Body should just return Nil_Element

KP-316a-C205-001 ASIS Corresponding_Expression_Type problem with limited types

  Problem:    Corresponding_Expression_Type blows up when the argument is a
              function call and this function is inherited by a type derived
              from a limited private type and if this function returns the
              result of this derived type

  Status:     This problem was fixed in 3.16a1 on 2003-02-06.

  Workaround: Use other ASIS queries to compute the result manually

KP-316a-C204-015 ASIS Corresponding_Type_Declaration/block statements problem

  Problem:    Corresponding_Type_Declaration blows up if the argument
              represents a full type declaration located in the declare block
              statement.

  Status:     This problem was fixed in 3.16a1 on 2003-02-06.

  Workaround: Use other ASIS queries to compute the result manually

KP-316a-C203-012 ASIS Corresponding_Name_Definition problem

  Problem:    Corresponding_Name_Definition blows up when the expected result
              is a defining program unit name and the corresponding unit is a
              library-level subprogram instantiation. This problem may also
              affect GNATPP.

  Status:     This problem was fixed in 3.16a1 on 2003-02-05.

  Workaround: Use other ASIS queries to compute the defining name on the base
              of Ada visibility rules

KP-316a-C201-002 GNAT.AWK freezes when a line ends with default separators

  Problem:    Using GNAT.AWK.Get_Line to read next line freeze the program
              if the line ends with one of the default separators.

  Status:     This problem was fixed in 3.16a1 on 2003-02-01.

  Workaround: Remove the trailing spaces or tabs in the file to parse.

KP-316a-C130-025 GNATPP blows up on obsolete character replacements

  Problem:    GNATPP can not process based numbers with ':' used as the
              replacement for '#', and it also blows up when '!' is used as
              the replacement for '|' (See RM 95, J.2)

  Status:     This problem was fixed in 3.16a1 on 2003-01-31.

  Workaround: Manually replace in the argument source all the obsolete usages
              of ':' and '!' before applying GNATPP

KP-316a-C130-010 GNATPP blows up on very long identifiers

  Problem:    GNATPP blows up when the argument source contains an identifier
              which length is bigger then maximal length set for the line of
              the result source.

  Status:     This problem was fixed in 3.16a1 on 2003-01-30.

  Workaround: use -M option to set the line length limitation bigger then the
              maximum of identifier lengths in the argument source

KP-316a-C129-014 Problems with packed array as record component

  Problem:    If a component of a record is a packed array with a length
              that is not a power of 2 storage units, and the component is
              initialized in the record declaration with an aggregate, then
              in some cases unused bits may not get initialized properly
              and operations on the entire component (including activating
              validity checking) may give wrong results.

  Status:     This problem was fixed in 3.16a1 on 2003-02-01.

  Workaround: Pack the record that contains the component, or give a
              record component clause with exactly the right number of
              bits to accomodate the packed array.

KP-316a-C129-008 Bad handling of small delays under Windows

  Problem:    Under Windows systems only, there is a race condition that can
              in some rare cases transform a small delay into a very long
              period of time.

  Status:     This problem was fixed in 3.16a1 on 2003-02-19.

  Workaround: If this occurs, use bigger delay values.

KP-316a-C127-016 GNATPP problem with qualified expression with aggregate

  Problem:    GNATPP blow ups on a qualified expression containing an
              aggregate as its expression (that is, on constructs like
              'String'((1 => C))'.

  Status:     This problem was fixed in 3.16a1 on 2003-01-29.

  Workaround: Remove the pair of brackets in the argument source (it
              will not change anything in its semantics) and then use GNATPP.

KP-316a-C125-002 ASIS problem with representing inherited subprograms

  Problem:    If the parent type for a derived type is the private type
              declared inside a generic instantiation, ASIS may return
              partially incorrect information about implicit declarations of
              ins inherited subprograms. This problem may also affect GNATPP.

  Status:     This problem was fixed in 3.16a1 on 2003-01-27.

  Workaround: Compute the information about properties of inherited
              subprograms from explicit Elements (starting from the derived
              type definition).

KP-316a-C125-001 GDB has problems printing empty strings and null aggregates

  Problem:    Printing an empty string from GDB in Ada mode produces
              instead the output "@0x0: (null)".  The "info break"
              command also has trouble in some cases printing expressions
              added by the "condition" command when those conditions
              contain strings. The "condition" command itself can
              sometimes fail when given an empty string.

  Status:     This problem was fixed in 3.16a1 on 2003-01-02.

  Workaround: The problems are largely cosmetic. First, simply realize
              that seeing the peculiar output described above
              when you expect a string indicates a null string, and that
              the conditions printed out by "info break" will be
              erroneous if these conditions contain empty strings. You
              can sometimes circumvent the inability to supply an empty
              string to "condition" by having a variable containing an
              empty string lying around.

KP-316a-C124-002 ASIS Declaration_Subtype_Mark problem

  Problem:    Declaration_Subtype_Mark may return syntactically incorrect
              result when applied to parameter's subtype mark in subprogram
              renaming declaration, and if this subtype mark is represented by
              an expanded name. This problem may also affect GNATPP.

  Status:     This problem was fixed in 3.16a1 on 2003-01-26.

  Workaround: Use Element text images to check and to control the result of
              Declaration_Subtype_Mark, if the exact form of the result is
              important.

KP-316a-C123-021 GNATPP infinite loop caused by delay and select statements

  Problem:    If a delay or select statement is the first statement in if or
              elsif statement path, GNATPP goes into infinite loop.

  Status:     This problem was fixed in 3.16a1 on 2003-01-29.

  Workaround: Do not use GNATPP on the sources containing such constructs.

KP-316a-C122-016 Default_Bit_Order incorrect on x86 LynxOS

  Problem:    On x86 LynxOS, the value of System.Default_Bit_Order is set to
              High_Order_First. The correct value is Low_Order_First.

  Status:     This problem was fixed in 3.16a1 on 2003-05-27.

  Workaround: Do not use the value System.Default_Bit_Order explicitly.

KP-316a-C122-006 GNATPP problem with null record definition

  Problem:    GNATPP blows up if the argument source contains a space between
              'null record' and ';'

  Status:     This problem was fixed in 3.16a1 on 2003-01-23.

  Workaround: Manually remove spaces like this and then apply GNATPP.

KP-316a-C121-025 ASIS Corresponding_Name_Definition_List problem

  Problem:    Corresponding_Name_Definition_List blows up when applied to an
              overloaded reference which has an enumeration literal as one of
              its possible interpretations. This problem may also affect
              GNATPP.

  Status:     This problem was fixed in 3.16a1 on 2003-01-23.

  Workaround: Use other ASIS queries to compute the list of possible
              interpretations for such reference on the base of Ada visibility
              rules

KP-316a-C121-021 ASIS Corresponding_Name_Definition  problem

  Problem:    Corresponding_Name_Definition returns Nil_Element when applied to
              a local name in a component clause in record representation
              clause if the clause is applied to the full view of a limited
              private type. This problem may also affect GNATPP.

  Status:     This problem was fixed in 3.16a1 on 2003-01-22.

  Workaround: Use other ASIS queries to compute the defining name on the base
              of Ada visibility rules

KP-316a-C121-013 ASIS Corresponding_Name_Definition problem

  Problem:    Corresponding_Name_Definition sometimes blows up when the
              argument represents the selector of an expanded name. This
              problem may also affect GNATPP.

  Status:     This problem was fixed in 3.16a1 on 2003-01-30.

  Workaround: Use other ASIS queries to compute the defining name on the base
              of Ada visibility rules

KP-316a-C121-010 Bad printing of task name in exception traces

  Problem:    When using GNAT.Exception_Traces and an exception occurs
              in a task, some garbage may be printed in the task name.

  Status:     This problem was fixed in 3.16a1 on 2003-01-21.

  Workaround: The garbage characters can be ignored.

KP-316a-C121-008 Compiler crash with case statement and -fprofile-arcs on HPUX

  Problem:    On HPUX, some case statements trigger a compiler crash (gigi
              abort 999) when compiled with -fprofile-arcs.

  Status:     This problem was fixed in 3.16a1 on 2003-01-22.

  Workaround: Arrange for the range of case values to be greater than 10
              times the number of values.

KP-316a-C120-012 Process not terminated on windows using GNAT.Expect.Close

  Problem:    When using Gnat.Expect on Windows, the call to the Close
              procedure does not terminate the underlying process if needed.

  Status:     This problem was fixed in 3.16a1 on 2003-01-30.

  Workaround: Wait for termination of the process, or kill it explicitely
              using TerminateProcess.

KP-316a-C115-004 GDB displays infinity as 0.0 on Solaris.

  Problem:    Infinities floating-point quantities on Solaris are displayed as
              0.0, or some other incorrect value.

  Status:     This problem was fixed in 3.16a1 on 2003-01-29.

  Workaround: If you are suspicious of a particular floating-point value,
              and it happens to be stored in a variable in memory (as
              opposed to a register), you can a command like
              "x/x VAR'address" to look at the underlying integer
              representation. True zero is represented as all 0's.

KP-316a-C113-002 Problem with reference in loop to field of record parameter

  Problem:    On x86 only, if a loop contains an expression that multiplies
              a loop index by a field of a parameter that is a record, then
              in optimization mode, the compiler may generate incorrect code.

  Status:     This problem was fixed in 3.16a1 on 2003-01-21.

  Workaround: Copy the field dereference into a temporary or compile
              the unit affected with optimization turned off.

KP-316a-BC17-013 Alignment problem with GNAT.Debug_Pools

  Problem:    The alignment used for all access types under control of a
              Debug_Pool is incorrect in some cases. It has been reset
              to standard'maximum_alignment.

  Status:     This problem was fixed in 3.16a1 on 2003-01-29.

  Workaround: Create a local copy of g-debpoo.adb, and modify the
              value of the constant Minimum_Alignment to
              standard'Maximum_Alignment. Recompile your application with
              gnatmake -a
