========================================================
Known problems in GNAT version 5.04a1 as of Jan 15, 2007
========================================================

Copyright (c) 2006, AdaCore

The following is a listing of known problems in release 5.04a1. Except where
specifically noted, all these problems have been corrected in version 6.0,
which means they are corrected in any wavefront issued subsequent to the date
above, and in the final 6.0 release (which is not yet scheduled or available).
The status line indicates the date the problem was fixed (in ISO format
YYYY-MM-DD). This can be used to determine if a given wavefront has the fix
identified in the entry.

KP-504a1-G112-013 Compiler crash at -O with uninitialized FP component on x86

  Problem:    The compiler crashes at -O or above on x86 on code manipulating
              a record made up of two floating-point components, where one of
              the components is initialized by passing it directly as the OUT
              parameter of a procedure.

  Status:     This was fixed in 6.0 on 2006-09-01

  Workaround: Create a temporary copy of the floating-point type component
              and use this temporary as the argument to the procedure. Then
              assign the result back to the floating-point component.

KP-504a1-G106-001 Debugger selects wrong frame after exception breakpoint

  Problem:    The debugger sometimes selects the wrong frame when hitting
              an exception breakpoint. This only happens when debugging
              the program from a different location from the location where
              the compiler was launched to build the application.

  Status:     This was fixed in 6.0 on 2007-01-06

  Workaround: Use the "cd" command in GDB to move to the directory where
              the compiler was launched in order to build the application.

KP-504a1-FC15-019 GNAAMP emits wrong code for loading elements of bit arrays

  Problem:    On the AAMP target only, the compiler generates incorrect code
              for loading the elements of arrays with bit-packed elements in
              cases where the array is larger than 32 bits.

  Status:     This was fixed in 6.0 on 2006-12-19

  Workaround: Replace the bit array with an unsigned word array of equivalent
              size and use arithmetic, shift, and mask operations to extract
              bit fields, or break the large array up into small bit arrays.

KP-504a1-FC15-004 Wrong code for static constants on PPC with -mstrict-align

  Problem:    The compiler generates wrong code at -O2 -gnatp -mstrict-align
              on cross PowerPC platforms for static constants involving nested
              records with representation clause and small enumeration types.
              Moreover the code is correct without -mstrict-align because the
              elaboration is fully static in this case.

  Status:     This was fixed in 6.0 on 2006-12-16

  Workaround: Bump the alignment of the offending field to get the same fully
              static elaboration as in the case without -mstrict-align.

KP-504a1-FC08-023 Incorrect equality test on variant with controlled component

  Problem:    If R1 is a variant record where one variant includes a controlled
              component, and R1 is assigned to R2, the test (R1=R2) yields
              False.

  Status:     This was fixed in 6.0 on 2006-12-08

  Workaround: Write an explicit equality routine for the type.

KP-504a1-FC08-018 GNAAMP generates bad code for byte array on odd byte boundary

  Problem:    On the AAMP target only, when a packed byte array is positioned
              on an odd byte boundary within a record, the compiler generates
              incorrect code for indexing the array.

  Status:     This was fixed in 6.0 on 2006-12-11

  Workaround: Position the byte array on a word boundary within the record.

KP-504a1-FC07-010 GNAAMP crashes on conversion from byte array to integer

  Problem:    On the AAMP target only, the compiler blows up when translating
              an unchecked conversion from a packed byte array to a scalar.

  Status:     This was fixed in 6.0 on 2006-12-11

  Workaround: Convert the byte array to an array of words and then convert the
              word array to the scalar.

KP-504a1-FC04-006 Wrong finalization for allocator in anonymous access function

  Problem:    A controlled object returned by an allocator in a function with
              an anonymous access result type is finalized within the function
              rather than in the scope enclosing the function.

  Status:     This was fixed in 6.0 on 2006-12-05

  Workaround: Use a named access type for the function result.

KP-504a1-FC04-003 Asis.Declarations.Corresponding_Equality_Operator problem

  Problem:    If "=" is inherited from the type declared in an instance,
              Asis.Declarations.Corresponding_Equality_Operator always
              classifies the result as being Is_Part_Of instance, when
              applied to the corresponding "/=".

  Status:     This was fixed in 6.0 on 2006-12-05

  Workaround: Get the Enclosing_Element for the result of the query and check
              Is_From_Instanse for it.

KP-504a1-FB30-004 Pragma Discard_Names not effective in inner scopes

  Problem:    Discard_Names affected only enumeration types in the same scope
              as the pragma, but it is supposed to also apply to nested scopes.

  Status:     This was fixed in 6.0 on 2006-12-24

  Workaround: Put additional Discard_Names pragmas in the nested scopes.

KP-504a1-FB29-014 Fixed_IO.Put writing outside of string parameter

  Problem:    There are cases when using Fixed_IO.Put that characters are
              stored past the end of the string out parameter.

  Status:     This was fixed in 6.0 on 2006-11-29

  Workaround: Ensure that the actual string is oversized, so characters
              will never be written outside.

KP-504a1-FB29-005 Ada.Text_IO.Skip_Line fails to update page count

  Problem:    When the current position in a text file used for input
              has been detected to be just before a page end marker,
              and Ada.Text_IO.Skip_Line is called to skip past line
              end and page end markers, Skip_Line fails to increment the
              page counter and to reset the line counter.

  Status:     This was fixed in 6.0 on 2006-11-29

  Workaround: When End_Of_Page (File) is true, use Skip_Page instead of
              Skip_Line.

KP-504a1-FB28-008 Compiler crash on limited controlled aggregate

  Problem:    Compiler aborts on a limited controlled discriminated aggregate
              that is the expression in a return statement for a function
              that returns an unconstrained limited type.

  Status:     This was fixed in 6.0 on 2006-12-05

  Workaround: Use a function that returns an access type, and create the
              object with an explicit allocator.

KP-504a1-FB27-003 Asis.Expressions.Actual_Parameter problem

  Problem:    When an actual parameter for a generic subprogram is an attribute
              reference, Asis.Expressions.Actual_Paramete returns the result of
              A_Function_Call kind.

  Status:     This was fixed in 6.0 on 2006-11-27

  Workaround: For a generic actual parameter corresponding to a formal
              subprogram (use normalized generic associations to determine
              this), check the result of the query and in case if it is of
              A_Function_Call or A_Procedure_Call_Statement, get called name
              (by using Asis.Expressions.Prefix or Asis.Statements.Called
              name) and treat it as a generic actual parameter.

KP-504a1-FB24-027 gnatpp problem with goto and labels

  Problem:    gnatpp blows up on code fragments that are infinite loops
              implemented with goto statements.

  Status:     This was fixed in 6.0 on 2006-11-25

  Workaround: Rewrite such infinite loops using a loop statement instead
              of goto and labels.

KP-504a1-FB24-014 Asis.Text.Element_Span problem with goto and labels

  Problem:    Asis.Text.Element_Span returns wrong result for a goto
              statement that implements infinite loop.

  Status:     This was fixed in 6.0 on 2006-11-24

  Workaround: Get Span and text image of enclosing constructs and previous and
              following statements and try to compute the span of GOTO
              manually.

KP-504a1-FB24-010 Asis.Text.Element_Span problem with qualified expressions

  Problem:    Asis.Text.Element_Span returns wrong result for a qualified
              expression if the expression contains a record aggregate
              in brackets.

  Status:     This was fixed in 6.0 on 2006-11-25

  Workaround: Get Span and text image of enclosing construct and try to compute
              the span of qualified expression manually.

KP-504a1-FB24-005 Wrong representation of signal masks on top of VxWorks 6.3

  Problem:    The size of signal masks on VxWorks 6.3 is 64-bit, but the
              run time is using internally a 32-bit representation. Hence,
              operations on these mask may corrupt adjacent objects.

  Status:     This was fixed in 6.0 on 2006-11-30

  Workaround: Use any previous version of VxWorks 6.

KP-504a1-FB24-003 Incorrect compile-time evaluation of fixed-point scaling

  Problem:    Multiplication or division of a fixed-point value by a negative
              value that is known at compile-time loses the sign.

  Status:    This was fixed in 6.0 on 2006-12-04

  Workaround: Use a variable instead of a negative constant.

KP-504a1-FB24-001 External reference with empty value not accepted

  Problem:    When using option -X of gnatmake or gprmake, an empty value
              was not allowed.

  Status:     This was fixed in 6.0 on 2006-11-24

  Workaround: Do not use empty values in external references. Instead,
              use a default of "" in the project file when using builtin
              function external.

KP-504a1-FB22-008 Conformance errors on matching access-to-class-wide formals

  Problem:    When compiling subprograms with an anonymous access-to-class-wide
              formal or result, the compiler incorrectly reports that profiles
              of the declaration and body do not conform when the declaration
              is compiled in view of a limited with for the class-wide type's
              enclosing unit and the body has a nonlimited with clause for the
              type's unit.

  Status:     This was fixed in 6.0 on 2006-11-27

  Workaround: If possible, remove the nonlimited with clause from the body of
              the subprogram's enclosing package. Otherwise, change the limited
              with clause on the package spec to a nonlimited with clause.

KP-504a1-FB16-005 Problem with interrupts in Ravenscar run time for ERC32

  Problem:    When there are no tasks to execute, and then an interrupt
              occurs that activates a task with a higher priority than the
              interrupt being handled, interrupt handling is not finalized
              correctly.

  Status:     This was fixed in 6.0 on 2006-11-27

  Workaround: Do not set the base priority of a task in the Interrupt_Priority
              range.

KP-504a1-FB16-002 Blowup on entry call using -gnatwl

  Problem:    When the -gnatwl switch was set, an entry call could cause a
              compiler blow up.

  Status:     This was fixed in 6.0 on 2006-11-17

  Workaround: Do not use -gnatwl switch for the affected unit.

KP-504a1-FB14-002 Blowup with bit aligned component value in aggregate

  Problem:    If a record aggregate contains a value that is a component
              reference not aligned on a byte boundary, the back end may
              blow up.

  Status:     This was fixed in 6.0 on 2006-11-27

  Workaround: Avoid the use of an aggregate and build the desired value with a
              series of assignment statements.

KP-504a1-FB10-025 Dot not quoted properly by GNAT.Regpat.Quote

  Problem:    The special character '.' is not quoted by this function

  Status:     This was fixed in 6.0 on 2006-11-13

  Workaround: Replace the string by another one twice longer where each
              character is quoted by preceding it with a '\'.

KP-504a1-FB08-024 Corrupt backtrace after stepi (sparc-solaris)

  Problem:    On sparc-solaris, the debugger sometimes prints a corrupt
              backtrace. This happens after having inserted a breakpoint
              inside the current function prologue, and after having done
              a "step instruction" command (stepi).

  Status:     This was fixed in 6.0 on 2006-11-09

  Workaround: Remove or disable the breakpoint before doing the stepi.

KP-504a1-FB08-004 Scheduling problem in Ravenscar run time for ERC32

  Problem:    When a task with a priority higher than the alarm handler
              executes a delay operation then the task that was preempted
              by the alarm handler is never rescheduled.

  Status:     This was fixed in 6.0 on 2006-11-14

  Workaround: Do not set the base priority of a task in the Interrupt_Priority
              range, or do not use delay operation in tasks whose priority is
              in the Interrupt_Priority range.

KP-504a1-FB06-015 Crash with subtypes of type derived from formal integer type

  Problem:    Compiler aborts in an instance when calling an operation
              on a second-level subtype of a type derived from a generic
              formal integer type.

  Status:     This was fixed in 6.0 on 2006-11-06

  Workaround  Remove one subtype and declare the operation on the base type.

KP-504a1-FB03-033 Wrong expansion of 'Address in functions returning interfaces

  Problem:    The expansion of 'Address applied to functions returning class
              wide interface types is wrong and raises Storage_Error. This
              problem also affects the elaboration of tagged type when a
              primitive of a tagged type returns a class-wide interface type.

  Status:     This was fixed in 6.0 on 2006-12-08

  Workaround: Avoid the use of 'Address with functions returning class-wide
              interface types. If the problem affects the elaboration of the
              tagged type (as described above) modify the profile of the
              function to avoid returning a class-wide interface type.

KP-504a1-FB03-016 gnatpp problem with generic package with empty visible part

  Problem:    gnatpp fails to reformat a generic package with empty visible
              part.

  Status:     This was fixed in 6.0 on 2006-11-03

  Workaround: Add some semantically neutral declaration in the visible part and
              remove it after pretty-printing.

KP-504a1-FB02-008 ASIS returns nonexistent object renaming declarations

  Problem:    ASIS may return artificial object renaming declarations created
              by the front-end as a part of representing tasking semantics.
              These declarations do not correspond to any construct in the
              code of the analyzed units.

  Status:     This was fixed in 6.0 on 2006-11-02

  Workaround: For the ASIS queries that return declaration lists, check the
              elements of the result lists, and for
              An_Object_Renaming_Declaration Element check if the name of the
              renamed object follows Ada syntax (this is not the case for the
              artificial structures created by the front-end)2.

KP-504a1-FB02-001 Spurious error with object notation in generic unit

  Problem:    Compiler rejects a function call X.F written in object notation,
              when the call appears within a nested generic unit.

  Status:     This was fixed in 6.0 on 2006-11-02

  Workaround  Use functional notation P.F (X) for the call, using an extended
              name for the function if visibility requires it.

KP-504a1-FA31-015 GNAT.Expect.Close kills all processes

  Problem:    When a processs Descriptor was not properly initialized, calling
              Close on it would attempt to kill other processes, such as the
              calling process.

  Status:     This was fixed in 6.0 on 2006-11-14

  Workaround: Do not call Close in this situation.

KP-504a1-FA31-012 Wrong source used by the compiler

  Problem:    When using project files but not mapping files the compiler
              may use incorrectly a source in a source directory that is
              not part of any project, resulting in a binding error.

  Status:     This was fixed in 6.0 on 2006-11-03

  Workaround: Remove or rename any file in a source directory that is not
              part of any project and has the same file name as a source
              of a project.

KP-504a1-FA31-006 Asis.Declarations.Corresponding_Base_Entity problem

  Problem:    If the argument represents an object renaming that renames a
              result of call of an attribute function,
              Asis.Declarations.Corresponding_Base_Entity
              returns the result of an attribute reference, but not of a
              function call kind.

  Status:     This was fixed in 6.0 on 2006-10-31

  Workaround: If the argument of Asis.Declarations.Corresponding_Base_Entity
              is of An_Object_Renaming_Declaration kind, check the result kind
              and in case if it is of an An_Attribute_Reference kind, treat it
              as a function call.

KP-504a1-FA30-016 ASIS problem with attribute clauses

  Problem:    If local_name in attribute_definition_clause is an attribute
              reference, ASIS does not correctly return the text image
              of the attribute_designator from this clause (query
              Asis.Expressions.Name_Image and queries from Asis.Text).

  Status:     This was fixed in 6.0 on 2006-10-31

  Workaround: Get the text image of the whole attribute clause and then
              parse it manually.

KP-504a1-FA26-004 Asis.Declarations.Renamed_Entity problem

  Problem:    If the argument represents a subprogram renaming that renames an
              attribute that is a subprogram, Asis.Declarations.Renamed_Entity
              returns the result of a subprogram call kind instead of an
              attribute reference kind.

  Status:     This was fixed in 6.0 on 2006-10-28

  Workaround: Check the result of Asis.Declarations.Renamed_Entity, and in
              case if it is of A_Function_Call or A_Procedure_Call_Statement,
              go to the Prefix or Called_Name accordingly.

KP-504a1-FA26-002 Asis.Declarations.Corresponding_Body problem

  Problem:    If the argument represents a subprogram declaration completed by
              pragma Import, Corresponding_Body return Nil_Element, but not
              the Element representing this pragma.

  Status:     This was fixed in 6.0 on 2006-10-28

  Workaround: Get the pragma Import that is a completion of a subprogram
              declaration by applying to the Element representing the
              subprogram declaration the Asis.Elements.Corresponding_Pragmas
              query and analyzing its result.

KP-504a1-FA24-014 Spurious accessibility error on 'Access of array component

  Problem:    Compiler rejects a 'Access attribute on an array component, or
              a subcomponent thereof, if the array is made to overlay some
              other variable by means of an address clause whose expression
              is some component of the array.

  Status:     This was fixed in 6.0 on 2006-10-24

  Workaround: Use Unchecked_Access instead.

KP-504a1-FA24-004 Error on component of class-wide self-referential access type

  Problem:    For a record component of an anonymous access type designating
              the class-wide type of an enclosing tagged type extension, the
              compiler was flagging the prefix of the class-wide attribute
              as needing to be tagged.

  Status:     This was fixed in 6.0 on 2006-10-24

  Workaround: Add a tagged incomplete declaration for the type extension along
              with a named access type, and use the named access type as the
              type of the self-referential component.

KP-504a1-FA20-004 Wrong size reported by size attribute for packed arrays

  Problem:    If a size clause is given for a packed array type that specifies
              a size that is not a multiple of the storage unit size, then the
              result returned by the size attribute is incorrectly rounded up.

  Status:     This was fixed in 6.0 on 2006-12-14

  Workaround: Use the specified size instead of using the size attribute. Note
              that the size clause itself is correctly processed, it is only
              the value returned by the attribute that is incorrect.

KP-504a1-FA17-017 Wrong code for procedure call involving small integral types

  Problem:    The compiler generates wrong code at -O1 or above, in the form
              of an unconditional exception raised at runtime, for the call to
              a procedure taking a formal parameter of a small integral type
              and if the actual is itself of a different small integral type
              and the bounds of the two types verify a certain property.

  Status:     This was fixed in 6.0 on 2006-10-24

  Workaround: Create a new variable whose type is that of the formal parameter
              and assign it the actual parameter; then invoke the procedure
              on this new variable.

KP-504a1-FA16-015 Size/Alignment ignored for packed array

  Problem:    An explicit alignment or size clause for an array was ignored if
              a pragma Packed was present for the array, resulting in some
              cases in sizes or alignments smaller than expected.

  Status:     This was fixed in 6.0 on 2006-10-23

  Workaround: Remove the pragma Packed, or, if this is not feasible, use a
              derived type and apply the size/alignment to this derived type.

KP-504a1-FA13-008 ASIS problem with parameters of implicit "/="

  Problem:    ASIS has problems when processing parameter specifications of
              the implicit declaration of "/=" operation that corresponds to
              an explicit "=" declared for a class-wide type. First, ASIS
              returns not A_Class_Attrubute but An_Identifier Element as the
              subtype mark from the parameter declaration. Second,
              when applied to this An_Identifier Element,
              Corresponding_Name_Definition query wrongly marks the result as
              being Is_Part_Of_Implicit and Is_Part_Of_Inherites

  Status:     This was fixed in 6.0 on 2006-10-14

  Workaround: Use Corresponding_Equality_Operator to get from implicit "/="
              declaration to the corresponding explicit declaration of "="
              and analyze the parameter profile of this "=" declaration.

KP-504a1-FA06-007 Executable hangs calling Exit_Process under GNU/Linux

  Problem:    When calling POSIX.Process_Primitives.Exit_Process under
              GNU/Linux with stand-alone shared libraries, the executable may
              hang waiting for tasks to terminate.

  Status:     This was fixed in 6.0 on 2006-10-09

  Workaround: Import the _exit function directly instead of calling
              Exit_Process.

KP-504a1-FA05-002 Watchpoint causes error message when resuming execution

  Problem:    Setting a watchpoint on a local variable or function
              parameter sometimes causes an error in the debugger
              after the execution of the program being debugged is
              resumed. The error message printed is "No frame is
              currently executing in block ...". This problem does
              not affect mips-irix, x86-windows, x86-lynxos, nor any
              of the VxWorks debuggers.

  Status:     This was fixed in 6.0 on 2006-10-06

  Workaround: Single-step one instruction before resuming the execution.

KP-504a1-FA04-016 Task_Id visibility problem in full run time for ERC32

  Problem:    Using Ada.Task_Identification.Task_Id as a parameter of a
              protected operation induces a visibility problem because the
              compiler gets confused with the homograph type defined in
              System.Tasking. This problem affects only the full run time
              for ERC32.

  Status:     This was fixed in 6.0 on 2006-10-11

  Workaround: Use a different run time.

KP-504a1-FA04-004 Asis.Statements.Corresponding_Called_Entity problem.

  Problem:    Asis.Statements.Corresponding_Called_Entity and
              Asis.Expressions.Corresponding_Called_Function blow up if the
              called subprogram is declared by library-level subprogram
              instantiation and this instantiation is a child unit.

  Status:     This was fixed in 6.0 on 2006-10-04

  Workaround: Get to the name of the called subprogram and then apply
              Asis.Expressions.Corresponding_Name_Declaration.

KP-504a1-FA04-002 Asis.Elements.Enclosing_Element problem with pragma Debug.

  Problem:    ASIS Enclosing_Element query blows up on a pragma Debug if
              this pragma is enclosed by an IF statement.

  Status:     This was fixed in 6.0 on 2006-10-04

  Workaround: Compute the enclosing element manually by traversing the
              enclosing compilation unit.

KP-504a1-FA04-001 Asis.Elements.Enclosing_Element problem.

  Problem:    ASIS Enclosing_Element query blow_ups on components of
              generic association of library-level subprogram instantiation.

  Status:     This was fixed in 6.0 on 2006-10-04

  Workaround: Compute the enclosing element manually by traversing the
              enclosing compilation unit.

KP-504a1-FA02-016 GNAAMP crash with -g on array component in a derived record

  Problem:    On the AAMP target only, the compiler aborts when generating
              debug information (DST) for a derived record type if the parent
              type has an array component declared with an explicit constraint.

  Status:     This was fixed in 6.0 on 2006-10-02

  Workaround: Declare a separate subtype declaration referenced by in the array
              component's declaration, or else compile the unit containing the
              derived type without -g.

KP-504a1-FA01-004 Asis.Declarations.Corresponding_Declaration problem.

  Problem:    Asis.Declarations.Corresponding_Declaration returns wrong result
              if the argument is an implicit declaration of inherited
              subprogram, and the parent subprogram is declared by a
              subprogram instantiation. Is_Part_Of_Implicit for the result is
              True.

  Status:     This was fixed in 6.0 on 2006-10-01

  Workaround: Check Is_Part_Of_Implicit for the result of the query, and if
              it is True, try to get the parent declaration by locating the
              parent type and traversing its primitive subprograms.

KP-504a1-F929-025 GNAAMP crash on assignment to a bit-packed formal parameter

  Problem:    On the AAMP target only, the compiler aborts when translating
              assignments to formal parameters of small bit-packed array types.

  Status:     This was fixed in 6.0 on 2006-10-02

  Workaround: Perform the assignment on elements with a loop or use an unpacked
              array.

KP-504a1-F929-015 Spurious error on size clause in instantiation

  Problem:    If a private type whose full view is a constrained array type
              that has a size clause is used as the actual in an instantiation,
              the compiler rejects the instantiation indicating that the
              specified size is too small.

  Status:     This was fixed in 6.0 on 2006-10-03

  Workaround: Remove the size clause, or make the type non-private.

KP-504a1-F929-011 Incorrect code generation with -march=pentium4

  Problem:    When using optimization flag -march=pentium4, the code generator
              may produce code incorrectly using MMX registers, which can
              yield to incorrect, unexpected results in floating point
              computations using the x87 FPU.

  Status:     This was fixed in 6.0 on 2006-10-29

  Workaround: Do not use optimization -march=pentium4

KP-504a1-F928-006 Crash on child unit body with nested declaration

  Problem:    Compiler aborts when a child unit subprogram body without a
              spec declares a type that requires finalization, and an inner
              package within the child unit has an object declaration whose
              type has a subcomponent of the outer type.

  Status:     This was fixed in 6.0 on 2006-10-01

  Workaround: Introduce a subprogram declaration for the child unit.

KP-504a1-F920-019 Check fails for class-wide allocator of local access type

  Problem:    The Ada 2005 run-time check that the tagged type associated with
              the tag of a class-wide allocator must not be declared at a
              deeper level than the access type incorrectly fails for an access
              type declared in a subprogram when the tagged type is declared
              outside the subprogram but at a deeper static level.

  Status:     This was fixed in 6.0 on 2006-09-25

  Workaround: Suppress checks on the allocator, or declare the offending tagged
              at a static level no deeper than the level of the access type.

KP-504a1-F920-001 Tornado 653 debugger prints wrong value for global variable

  Problem:    On Tornado 653, the debugger sometimes gets the wrong
              address for global variables, causing it to print the
              wrong value for these variables.

  Status:     This was fixed in 6.0 on 2006-09-26

  Workaround: Get the correct address for that value using "lkup" in
              a tornado shell console, and use that address to print
              the value of the variable under the debugger.

KP-504a1-F919-016 ASIS problem with an attribute reference as a subtype mark.

  Problem:    Asis.Definitions.Corresponding_Parent_Subtype and
              Asis.Definitions.Corresponding_Root_Type blow up if the argument
              type definition Element has an attribute reference as the
              subtype mark.

  Status:     This was fixed in 6.0 on 2006-09-20

  Workaround: Check the subtype mark kind in the argument type definition
              before applying these queries.

KP-504a1-F919-008 Link failure when compiling with -save-temps on Windows

  Problem:    Building a program using the compiler switch -save-temps on
              Windows results in a link failure because of unresolved symbols.

  Status:     This was fixed in 6.0 on 2006-09-25

  Workaround: First build with -save-temps and put the resulting assembly
              files (.s suffix) aside, then build again without -save-temps.

KP-504a1-F919-003 Asis.Expressions.Corresponding_Called_Function problem

  Problem:    Asis.Expressions.Corresponding_Called_Function (and
              Asis.Statements.Corresponding_Called_Entity) blows up if pragma
              Import is applied to a called subprogram.

  Status:     This was fixed in 6.0 on 2006-09-22

  Workaround: Get the name of the called subprogram and apply
              Corresponding_Name_Declaration to it.

KP-504a1-F919-003 Asis.Expressions.Corresponding_Name_Definition problem

  Problem:    Asis.Expressions.Corresponding_Name_Definition returns a wrong
              result when applied to a reference to a record component
              inherited by a type that is a full view of a private type or
              a private extension

  Status:     This was fixed in 6.0 on 2006-09-21

  Workaround: Try to get the type of the corresponding record object and to
              compute the component definition manually.

KP-504a1-F918-015 Asis.Statements.Corresponding_Called_Entity problem

  Problem:    Asis.Statements.Corresponding_Called_Entity (and
              Asis.Expressions.Corresponding_Called_Function) returns nil
              result if the called subprogram is an inherited operation of
              a formal derived type.

  Status:     This was fixed in 6.0 on 2006-09-19

  Workaround: Get to the name of a called subprogram and apply
              Asis.Expressions.Corresponding_Name_Declaration.

KP-504a1-F913-019 Debugger crash loading symbols from large application

  Problem:    The debugger may hit the system stack size limit while trying
              to load the debugging information from a very large executable,
              causing the debugger to crash. This can only occur on pa-hpux.

  Status:     This was fixed in 6.0 on 2006-09-19

  Workaround: Increase the maximum stack size allowed by the system.

KP-504a1-F912-014 Memory explosion on heavily parameterized variant record

  Problem:    The compiler consumes all the available memory and eventually
              aborts on code manipulating a discriminated record type with
              variant parts whose discriminant is of an enumeration type
              that can take a large number of values.

  Status:     This was fixed in 6.0 on 2006-09-17

  Workaround: For optimized builds compile the code with -Os. For debug builds
              compile the code with -Os followed by a list of -fno-xxx options
              that are the counterparts of the -fxxx options enabled by -Os.

KP-504a1-F911-024 AAMP assembly errors on packed component addressing

  Problem:    On the AAMP target only, the compiler generates invalid macros
              when addressing certain components of packed records. This occurs
              in cases where a record component that is itself a packed record
              is not located on a storage unit boundary and components within
              the packed record start at offsets greater than the size of a
              storage unit.

  Status:     This was fixed in 6.0 on 2006-09-12

  Workaround: Locate the packed component's containing record on a storage unit
              boundary, or else perform references and updates using unchecked
              conversions to a packed array type overlaying the record.

KP-504a1-F910-001 Valid dependency files incorrectly processed

  Problem:    Some valid C/C++ dependency files where the name of the object
              file starts every line are not processed past the first line
              by gprmake, resulting in object files not regenerated even when
              some files it depends on are modified.

  Status:     This was fixed in 6.0 on 2006-09-15

  Workaround: Invoke gprmake with -f to be sure to compile all C/C++ sources

KP-504a1-F908-006 Wrong call to tasking operations using the ZFP run time

  Problem:    The compiler generates a call to a tasking related operation when
              declaring a class-wide access to a tagged limited type. This is
              wrong in the case of the Zero FootPrint run time which does not
              support tasking.

  Status:     This was fixed in 6.0 on 2006-09-14

  Workaround: Add pragma Restriction (No_Tasking).

KP-504a1-F907-005 Spurious overriding error on protected entries

  Problem:    Compiler rejects an overriding indicator on a protected entry,
              when the parent interface is declared within an instance of a
              package declared within a formal package of the generic unit
              containing the protected declaration.

  Status:     This was fixed in 6.0 on 2006-09-07

  Workaround: Remove overriding indicator.

KP-504a1-F905-015 Silent preprocessing when pretty printing

  Problem:    When gnatpp is called for a source containing the preprocessor
              directives, it first does preprocessing and then reformats the
              preprocessed source. As a result, the pretty-printed source no
              longer contains the preprocessor directives. This may be
              unexpected and not desirable for a user, particularly when the
              pretty printer is called from GPS and the call takes all the
              options from the project file.

  Status:     This was fixed in 6.0 on 2006-09-08

  Workaround: Do not use the pretty printer with files containing preprocessor
              directives unless this behavior is desired.

KP-504a1-F905-005 Cannot redefine Calendar in standard mode

  Problem:    Some of the library units listed in RM95 J.1, including
              package Calendar, could not be replaced without using
              specific switches.

  Status:     This was fixed in 6.0 on 2006-09-12

  Workaround: Compile these library units with -gnatg -gnatws.

KP-504a1-F903-003 Crash on constant with address clause as case alternative

  Problem:    Compiler aborts on static constant to which an address clause
              applies when used as a case statement alternative.

  Status:     This was fixed in 6.0 on 2006-09-07

  Workaround: Remove the address clause on the constant declaration, or
              initialize the constant with another one to which no address
              clause applies, and use the latter as the case alternative.

KP-504a1-F903-002 ASIS problems with implicit declaration of "/="

  Problem:    ASIS queries Asis.Elements.Enclosing_Element and
              Asis.Declarations.Corresponding_Body blow up when applied to an
              Element that represents the implicit declaration of the "/="
              operation that corresponds to an explicit definition of "=".

  Status:     This was fixed in 6.0 on 2006-09-04

  Workaround: Use Asis.Extensions.Is_Implicit_Neq_Declaration to detect these.
              Elements and do not apply Enclosing_Element and
              Corresponding_Body to them.

KP-504a1-F901-018 Incorrect padding computation in GNAT.MD5

  Problem:    An incorrect computation of padding size is performed in
              GNAT.MD5, resulting in a wrong digest value being produced
              for messages whose size is congruent to 448 bits modulo 512.

  Status:     This was fixed in 6.0 on 2006-09-01

  Workaround: Avoid use of GNAT.MD5

KP-504a1-F831-013 Compiler aborts on overloaded literal and renamed equality

  Problem:    Compiler aborts on an overloaded enumeration literal that is
              an operand of an inequality operator, when the corresponding
              equality is a user-defined renaming.

  Status:     This was fixed in 6.0 on 2006-09-01

  Workaround: Use a type qualification to disambiguate the literal

KP-504a1-F823-001 Compiler blows up analyzing anonymous access to task types

  Problem:    The use of Ada 2005 anonymous access to task types in record
              or array components require the frontend to take care of
              generating code to register the master associated with the
              designated task. The generation of such master is missing
              (causing an internal error in the compiler).

  Status:     This was fixed in 6.0 on 2006-08-24

  Workaround: Replace the anonymous access type by a general access type.

KP-504a1-F823-002 Infinite loop compiling illegal Ada 2005 code

  Problem:    Ada does not allow the use of anonymous access types in entry
              formals. The use of anonymous access to subprograms in entry
              formals causes the frontend to enter into an infinite loop.

  Status:     This was fixed in 6.0 on 2006-08-24

  Workaround: Avoid writing such illegal code.

KP-504a1-F822-014 GNAT.String_Split.Create memory leak

  Problem:    There is some unfreed memory when reusing a Slice_Set object
              in the Create procedure.

  Status:     This was fixed in 6.0 on 2006-08-23

  Workaround: Do not reuse a Slice_Set object. Declare one such object each
              time it is needed.

KP-504a1-F822-010 Close a file that is not open can break mutual exclusion

  Problem:    When using the procedure Close (from input-output packages) to
              close a file that is not open it can erroneously release a global
              lock, and hence break the internal mutual exclusion mechanism.

  Status:     This was fixed in 6.0 on 2006-09-12

  Workaround: Check whether the file is open before trying to close it.

KP-504a1-F821-005 Compiler rejects prefixed function call that is an indexing

  Problem:    Compiler produces a spurious error on a call of the form
              Obj.F (X) when F is a function with a single formal that
              returns an array type, and the context expects the component
              type of the array.

  Status:     This was fixed in 6.0 on 2006-09-02

  Workaround: Write the call as F(Obj)(X).

KP-504a1-F818-016 GNAT.Regpat bad handling of [[:xdigit:]]

  Problem:    Using the posix character classes in GNAT.Regpat fails for the
              above class, and doesn't report an error when an unknown
	      character class is used.

  Status:     This was fixed in 6.0 on 2006-08-18

  Workaround: Replace [[:xdigit:]] with [0-9a-fA-F]

KP-504a1-F818-005 Asis.Expressions.Corresponding_Name_Declaration problem

  Problem:    Asis.Expressions.Corresponding_Name_Declaration returns a wrong
              result when applied to a reference to a formal parameter of a
              child subprogram in case when this subprogram does not have a
              separate spec.

  Status:     This was fixed in 6.0 on 2006-08-18

  Workaround: In the set of Ada units processed by an ASIS application, add
              separate specs to child subprograms.

KP-504a1-F817-008 Function returning variant record called multiple times

  Problem:    When a component of a variant record is directly referenced out
              of a function call, for example on the right-hand side of an
              assignment, the function is invoked multiple times.

  Status:     This was fixed in 6.0 on 2006-08-24

  Workaround: Create a new local variable and assign the return value of the
              function to it. Then replace the function call in the component
              reference by the variable.

KP-504a1-F816-012 gnatpp problem with bracket encoding

  Problem:    gnatpp can not correctly process wide or wide wide character and
              string literals where one or more characters is encoded using
              the bracket encoding method.

  Status:     This was fixed in 6.0 on 2006-08-17

  Workaround: Comment out the code fragments containing such literals
              before applying gnatpp.

KP-504a1-F812-001 Asis.Declarations.Corresponding_Equality_Operator problem

  Problem:    Asis.Declarations.Corresponding_Equality_Operator returns a wrong
              result when the user-defined "=" with Boolean result is an
              inherited operation of a derived type.

  Status:     This was fixed in 6.0 on 2006-08-15

  Workaround: Get the corresponding root type, apply the query to its "=" and
              "/=" operations and then map the results onto the derived type.

KP-504a1-F812-002 Synchronized interface conversion problem

  Problem:    The layout of synchronized interfaces differs from the layout of
              non-synchronized interfaces. This difference breaks the compiler
              support for interface conversions.

  Status:     This was fixed in 6.0 on 2006-08-25

  Workaround: Avoid using interface conversions with synchronized interface
              types.

KP-504a1-F810-015 Corresponding_Declaration fails for entry body argument

  Problem:    Asis.Declarations.Corresponding_Declaration fails if the argument
              is an entry body, and the corresponding protected type is the
              full view of a private type.

  Status:     This was fixed in 6.0 on 2006-08-11

  Workaround: Get the corresponding declaration for the whole protected body
              and then locate the entry definition by traversing the protected
              definition.

KP-504a1-F809-005 Ada.Real_Time delay statement in non-tasking program fails

  Problem:    If a delay statement uses the real time clock in Ada.Real_Time
              and the program does not contain other tasking constructs, the
              run time may try to seize an internal lock before it has been
              initialized, causing unpredictable behavior.

  Status:     This was fixed in 6.0 on 2006-08-17

  Workaround: Add any tasking construct (such as a task type definition) to
              force a proper initialization of the tasking run time.

KP-504a1-F809-004 Asis.Expressions.Corresponding_Name_Definition problem

  Problem:    Asis.Expressions.Corresponding_Name_Definition may return wrong
              results when applied to discriminant references.

  Status:     This was fixed in 6.0 on 2006-08-09

  Workaround: Try to define the record type from the context and then try to
              locate the needed defining name by traversing the discriminant
              part.

KP-504a1-F807-006 Asis.Expressions.Corresponding_Name_Definition problem

  Problem:    Asis.Expressions.Corresponding_Name_Definition may return wrong
              results when applied to the references to inherited record
              components.

  Status:     This was fixed in 6.0 on 2006-08-07

  Workaround: Try to define the record type from the context, get a
              list of its inherited components and then try to locate
              the needed defining name by traversing this list.

KP-504a1-F803-009 Problem with Asis.Declarations.Corresponding_Body

  Problem:    For an ASIS Context based on more then one tree file,
              Asis.Declarations.Corresponding_Body blows up if the argument is
              located in the spec of a generic package, and the tree accessed
              by ASIS when this query is called is not the main tree for
              the enclosing unit for the argument declaration.

  Status:     This was fixed in 6.0 on 2006-08-05

  Workaround: Before applying Corresponding_Body, switch to the main tree
              for the argument Element

KP-504a1-F802-023 Constraint_error on 'Input

  Problem:    The 'Input attribute incorrectly raises Constraint_Error if the
              type is private, and does not have (visible) discriminants, but
              the full type has discriminants with defaults.

  Status:     This was fixed in 6.0 on 2006-08-04

  Workaround: Make the discriminants visible in the private type declaration.

KP-504a1-F802-001 Wrong delay until on Windows

  Problem:    A delay until based on Ada.Calendar.Time can get wrong after
              a long run (more than 10 hours). This is due to synchronizations
              of the runtime performance counter with the current clock value.
              It can also happen when a user adjust the clock manually. Note
              that the delay until statement based on Ada.Real_Time.Time does
              not have this problem. Ada.Real_Time.Time is a monotonic clock
              and no synchronization ever happen on this clock.

  Status:     This was fixed in 6.0 on 2006-08-17

  Workaround: Use a delay until with an Ada.Real_Time.Time object.

KP-504a1-F801-012 Spurious error on RACW with unconstrained limited formal

  Problem:    A spurious error may be produced when a remote access-to-class-
              wide type is declared if the following conditions occur:
                - The RACW has a primitive operation with an unconstrained
                  limited private type;
                - The full view of the formal parameter type is not limited.

  Status:     This was fixed in 6.0 on 2006-08-03

  Workaround: Make the private view of the formal parameter type non-limited.

KP-504a1-F731-008 ASIS problem with subprograms inherited from instantiations

  Problem:    ASIS can not represent the implicit inherited subprograms if the
              parent subprogram is defined by generic instantiation.

  Status:     This was fixed in 6.0 on 2006-08-04

  Workaround: Try to detect the parent subprogram manually and compute
              the properties of inherited subprogram from it.

KP-504a1-F729-003 Compiler abort on discriminated protected type with -gnatVa

  Problem:    Compiler aborts on a private ccomponent constrained by a
              discriminant of the enclosing protected type, when the unit
              is compiled with validity checks enabled.

  Status:     This was fixed in 6.0 on 2006-08-06

  Workaround: Compile unit without validity checks.

KP-504a1-F728-015 No full path in pragma Source_Reference from gnatprep

  Problem:    When gnatprep is invoked with -r and a full path for
              the input file, only the simple file name, not the full path,
              appears in the pragma Source_Reference in the output file.

  Status:     This was fixed in 6.0 on 2006-07-28

  Workaround: If needed, manually modify the Source_Reference pragma in the
              output file.

KP-504a1-F728-008 Crash on overloaded loop bound with -gnatVa

  Problem     Compiler aborts when compiling a loop whose iteration scheme is
              given with a subtype indication, when one of the bounds is an
              overloaded literal or function call, and the compilation is done
              with all validity checks enabled.

  Status:     This was fixed in 6.0 on 2006-08-02

  Workaround  Write the loop with a range rather than a subtype indication,
              or use a qualified expression for the overloaded bound

KP-504a1-F727-023 Problem with Asis.Extensions query

  Problem:    Asis.Extensions.Corresponding_Called_Function_Unwinded blows up
              when applied to the call of the function that returns the result
              of an access type in case if the context of this call requires
              applying implicit dereference to the result of the call.

  Status:     This was fixed in 6.0 on 2006-07-31

  Workaround: Instead of using this ASIS extension query, use the standard
              query Asis.Exprerssions.Corresponding_Called_Function to get
              the declaration of the called function, and then if needed apply
              Asis.Declarations.Corresponding_Base_Entity to unwind renamings

KP-504a1-F723-003 Crash on function child unit returning anonymous access

  Problem:    Compiler aborts when compiling a child unit that is a function
              returning an anonymous access type.

  Status:     This was fixed in 6.0 on 2006-07-24

  Workaround: Place function within a package child unit.

KP-504a1-F720-020 Debugger error when comparing array slice with array

  Problem:    The debugger prints an error saying "Attempt to compare
              array with non-array" when trying to compare an array
              slice with an array.

  Status:     This was fixed in 6.0 on 2006-07-20

  Workaround: Force the type of the array slice to be an array type
              by using type qualification as follow:

                (gdb) print array_type'(array_value (1 .. 3)) = "string"

KP-504a1-F720-001 Crash on illegal formal package

  Problem:    Compiler aborts with an unhandled Instantiation_Error when one
              of the actuals in the declaration of a formal package is illegal.

  Status:     This was fixed in 6.0 on 2006-07-20

  Workaround: Do not write illegal formal package declarations.

KP-504a1-F718-004 gprmake always recompiles C/C++ code on Windows

  Problem:    gprmake always recompiles C/C++ files on Windows, even when they
              are up to date.

  Status:     This was fixed in 6.0 on 2006-07-20

  Workaround: Let gprmake recompile the C/C++ files. This affects only the time
              for compilation, not correctness.

KP-504a1-F714-004 Entry formal with null-excluding access type causes exception

  Problem:    If a formal parameter of a task entry has an access type that
              excludes null values using NOT NULL, then the compiler emits an
              unconditional raise of Constraint_Error on calls to the entry.

  Status:     This was fixed in 6.0 on 2006-07-14

  Workaround: Remove the NOT NULL keywords from the access parameter subtype.
              Note that this is relevant only in Ada 2005 mode.

KP-504a1-F710-026 Pragma Unreferenced ignored for private type

  Problem:    A pragma Unreferenced given for a private type was not properly
              controlling references to the full type, resulting in missing
              or extra warnings.

  Status:     This was fixed in 6.0 on 2006-07-10

  Workaround: Provide an additional pragma Unreferenced after the full type.

KP-504a1-F709-001 Missing Wide_Wide_Text_IO packages

  Problem:    Ada.Float_Wide_Wide_Text_IO and Ada.Integer_Wide_Wide_Text_IO,
              two required Ada 2005 packages, were omitted from the library.

  Status:     This was fixed in 6.0 on 2006-07-11

  Workaround: Wide_Wide_Text_IO.Float_IO and Wide_Wide_Text_IO.Integer_IO,
              are available, and can be instantiated with types Float and
              Integer to provide this missing functionality.

KP-504a1-F706-016 Binder file cannot be compiled in Ada 2005 mode

  Problem:    If Ada 2005 mode is forced for compiling the binder file (e.g.
              by using the parameter "-largs --GCC="gcc -gnat05" for gnatmake),
              then, if any of the unit names correspond to reserved words in
              Ada 2005, the compilation of the binder file will fail.

  Status:     This was fixed in 6.0 on 2006-07-11

  Workaround: This only causes trouble in peculiar circumstances, such as
              using the --GCC parameter, or when using a compiler (such as
              the GAP version) that is configured for Ada 2005 by default.
              When using GNAT Pro, just use the normal options, and this
              problem will not arise. When using the GAP version, a possible
              work around is to use "-largs --GCC="gcc -gnat95".

KP-504a1-F630-014 Unsupported interface type conversion

  Problem:    The frontend is too strict and does not accept valid type
              conversions associated with interface types (the conversion
              of a class-wide interface type to a tagged type).

  Status:     This was fixed in 6.0 on 2006-07-08

  Workaround: Avoid the use of such Ada 2005 feature.

KP-504a1-F630-008 Parentheses incorrectly accepted around subtype mark

  Problem:    If the right operand of a membership test is enclosed in
              parentheses, this is a syntactic error, but GNAT accepts the
              use of parens in this context without issuing an error message.

  Status:     This was fixed in 6.0 on 2006-06-30

  Workaround: Remove the incorrect parentheses.

KP-504a1-F629-033 Incorrect warnings for Ada 2005 Wide_Wide_Text_IO units

  Problem:    A program that with's Ada.Wide_Wide_Text_Io.Editing or
              Ada.Wide_Wide_Text_Io.Complex_Io gets incorrect warnings
              about these units being internal GNAT units, when in fact
              they are standard RM defined packages.

  Status:     This was fixed in 6.0 on 2006-06-28

  Workaround: The warnings can simply be ignored (or suppressed with -gnatws).

KP-504a1-F629-015 Asis.Expressions.Corresponding_Name_Definition problem

  Problem:    Asis.Expressions.Corresponding_Name_Definition returns wrong
              result if applied to the reference to the inherited record
              component of a type that has a private view.

  Status:     This was fixed in 6.0 on 2006-06-30

  Workaround: Analyze the argument context, detect the type that has this
              component and manually traverse the list of the inherited
              components obtained from the full type definition to detect
              the needed defining name for the component.

KP-504a1-F628-027 Wrong implementation of class-wide interface objects

  Problem:    The expansion of class-wide interface object declarations is
              wrong (it does not generate a copy of the object).

  Status:     This was fixed in 6.0 on 2006-07-07

  Workaround: Avoid the use of this Ada 2005 feature.

KP-504a1-F628-026 Asis.Elements.Enclosing_Element problem on formal packages

  Problem:    Asis.Elements.Enclosing_Element blows up if applied to a generic
              package name from a formal package declaration if this formal
              package declaration is located in expanded generic.

  Status:     This was fixed in 6.0 on 2006-06-28

  Workaround: When analyzing a formal package declaration, keep track of the
              structural decomposition to avoid calls to Enclosing_Element.

KP-504a1-F628-025 Array of access types within record not correctly zeroed

  Problem:    On architectures requiring strict alignment (e.g. many power pc
              configurations), an array of access types within a record type
              subject to pragma Component_Alignment (Storage_Unit) may not be
              correctly zeroed after being allocated.

  Status:     This was fixed in 6.0 on 2006-07-09

  Workaround: Change the layout of the record type so as to align the array
              on an offset boundary according to the size of System.Address,
              e.g. on a 8-byte offset boundary for a 64-bit machine.

KP-504a1-F628-023 gnatls does not take into account GPR_PROJECT_PATH

  Problem:    When environment variable GPR_PROJECT_PATH is defined,
              gnatls does not take it into account to display the
              project path. It only uses ADA_PROJECT_PATH.

  Status:     This was fixed in 6.0 on 2006-06-28

  Workaround: Only use ADA_PROJECT_PATH, not GPR_PROJECT_PATH.

KP-504a1-F627-001 Asis.Expressions.Corresponding_Name_Definition problem

  Problem:    Asis.Expressions.Corresponding_Name_Definition blows up if its
              argument is a reference to the name of instantiation (and is
              itself located in the instantiation code), and the name of the
              generic unit is a defining expanded name.

  Status:     This was fixed in 6.0 on 2006-06-28

  Workaround: Try to define the corresponding defining name manually by
              analyzing the instantiation and the template code.

KP-504a1-F626-014 Unsupported Ada 2005 syntax for derived types

  Problem:    The new Ada 2005 syntax for derived types allows the use of
              the reserved word "limited" (this extension was motivated in the
              language because limitedness is not inherited from abstract
              interfaces). However, the front end rejects the declaration of
              "abstract limited" derivations.

  Status:     This was fixed in 6.0 on 2006-06-26

  Workaround: Add a dummy limited type as the root of derivation.

KP-504a1-F625-006 Spurious assertion and abstract interface type derivations

  Problem:    If a program containing derivations of abstract interface types
              is compiled with assertions enabled, its execution raises an
              an assertion error during the elaboration of such tagged type.
              This assertion is caused by an over-restrictive assertion placed
              in the run-time of the compiler.

  Status:     This was fixed in 6.0 on 2006-06-28

  Workaround: Compile such compilation units without the -gnata switch.

KP-504a1-F623-015 Asis.Declarations.Corresponding_Body problem

  Problem:    In case if an ASIS  Context is based on more then one tree file,
              Asis.Declarations.Corresponding_Body may blow up when applied to
              a declaration nested in library unit subprogram body. This can
              happen if the currently accessed tree is not the main tree for
              this library unit.

  Status:     This was fixed in 6.0 on 2006-06-26

  Workaround: Manually switch to the main tree for this unit before applying
              Corresponding_Body.

KP-504a1-F622-033 Misleading warning about redundant with_clause.

  Problem:    If the context of a body B has a with_clause on package P and
              a subsequent use_clause on nested package P.Q, and the spec of
              B also has a with_clause on P, then the compiler will warn that
              the with_clause on the body is redundant.

  Status:     This was fixed in 6.0 on 2006-06-22

  Workaround: Ignore warning, or compile unit with redundant warnings disabled.

KP-504a1-F621-016 ASIS problem with normalized generic associations

  Problem:    Asis.Declarations.Generic_Actual_Part query with Normalized
              parameter set ON blows up when applied to an instantiation that
              is located inside a generic unit and uses the box default

  Status:     This was fixed in 6.0 on 2006-06-22

  Workaround: Compute the information corresponding to normalized associations
              manually.

KP-504a1-F620-013 ASIS fails to get normalized associations from formal package

  Problem:    Asis.Declaration.Generic_Actual_Part query with Normalized
              parameter set ON blows up when applied to a formal package.

  Status:     This was fixed in 6.0 on 2006-06-20

  Workaround: In case of a formal package, compute the information
              corresponding to normalized associations manually.

KP-504a1-F619-024 Asis.Expressions.Corresponding_Name_Declaration problem

  Problem:    Asis.Expressions.Corresponding_Name_Declaration blows up when
              applied to the reference to the instantiation of generic
              parent that itself is located in the expanded code of the
              instantiation of the generic child

  Status:     This was fixed in 6.0 on 2006-06-20

  Workaround: Try to compute the defining occurrence for such a reference using
              other ASIS structural and semantic queries.

KP-504a1-F619-015 Missing range check when validity checks enabled

  Problem:    In certain cases, including parameter passing, a required range
              check may be omitted when full validity checking is enabled using
              the -gnatVa flag.

  Status:     This was fixed in 6.0 on 2006-06-27

  Workaround: Do not use -gnatVa when compiling the unit in question.

KP-504a1-F619-006 Missing abstract interface type conversions

  Problem:    The frontend does not expand the code associated with conversions
              of access to class-wide interfaces type.

  Status:     This was fixed in 6.0 on 2006-06-26

  Workaround: Considering the statement "... := Target_Acc (Ptr);" in which
              Ptr is an access to a class-wide interface and Target_Acc is
              an access type whose designated type implements such interface
              or an access type whose designated type is another abstract
              interface type) replace this statement by the following one:
              ".. := Target'Class (Ptr.all)'Access;"

KP-504a1-F619-003 Dispatching constructor returning interface

  Problem:    After a tagged object is built with a dispatching constructor
              (see Generic_Dispatching_Constructor), the compiler generates a
              run-time check to ensure that the tag of the object denotes a
              type withing the target class. If the target class is an abstract
              interface type the run-time check generated by the compiler is
              wrong and the program raises always the exception Tag_Error.

  Status:     This was fixed in 6.0 on 2006-06-20

  Workaround: If the interface is an immediate ancestor of the built objects
              then replace the declaration of the abstract interface by an
              "abstract tagged null record". Otherwise such feature cannot
              not be used (only when returning abstract interface types).

KP-504a1-F619-001 Allocation problem for records with defaulted discriminants

  Problem:    When allocating a record whose type declaration has discriminants
              with default values using "new", the maximum possible size of the
              record type is allocated, which is not necessary, because such
              heap objects are constrained by their initial value.

  Status:     This was fixed in 6.0 on 2006-06-21

  Workaround: Use an explicit constraint, as in "new T (Discrim => ...)".

KP-504a1-F616-007 Bad handling of pragma Task_Info on some POSIX platforms

  Problem:    Under Darwin, HP-UX and AIX, the handling of pragma Task_Info
              is incorrect, so the thread scopes are either ignored or
              reverted.

  Status:     This was fixed in 6.0 on 2006-07-20

  Workaround: Avoid use of Task_Info pragma.

KP-504a1-F614-020 ASIS problem with normalized generic associations

  Problem:    Asis.Elements.Enclosing_Element blows up when applied to the
              actual parameters from normalized generic association in case if
              this actual corresponds to box default. This happens only for
              library level instantiations.

  Status:     This was fixed in 6.0 on 2006-06-21

  Workaround: For such an argument, Enclosing_Element should return the
              corresponding instantiation element. So when analyzing
              normalized generic associations, also keep the instantiation
              element and use it in case Enclosing_Element should be applied
              to the actuals corresponding to box default.

KP-504a1-F614-018 'Access rejected in constraint of limited interface extension

  Problem:    The compiler wrongly reports an accessibility violation when
              a component of a record type R has a type that is a limited
              extension of an interface type that is constrained with R'Access.

  Status:     This was fixed in 6.0 on 2006-06-14

  Workaround: Use 'Unchecked_Access instead of 'Access in the constraint.

KP-504a1-F614-013 DLL not found error message printed by debugger

  Problem:    The debugger sometimes prints one or more error messages
              saying that a DLL starting at a specified address could
              not be found.

  Status:     This was fixed in 6.0 on 2006-06-16

  Workaround: These error messages are harmless and can be safely ignored.

KP-504a1-F614-008 Error on access constraint of limited interface extension

  Problem:    The compiler issues an error for an accessibility violation when
              constraining an access discriminant of a record component by an
              access to the record's current instance (Record_Type'Access),
              even though the component's type is an explicitly limited type
              extension of an interface ancestor.

  Status:     This was fixed in 6.0 on 2006-06-14

  Workaround: Change the constraint to use Record_Type'Unchecked_Access.

KP-504a1-F614-006 Stack checking not working correctly for ERC32 targets

  Problem:    When activating stack checking for ERC32 the compiler uses
              a probing mechanism that relies on memory protection which
              is not supported by ERC32.

  Status:     This was fixed in 6.0 on 2006-06-14

  Workaround: Revert to the old implementation using -fold-stack-check.

KP-504a1-F608-016 GNAAMP emits wrong code for scalar components with large size

  Problem:    On the AAMP target only, the compiler generates incorrect code
              for certain loads and stores involving scalar record components
              that are specified with a bit range larger than the size of their
              base type (for example, a Boolean component allocated 32 bits).

  Status:     This was fixed in 6.0 on 2006-06-20

  Workaround: Only specify a size corresponding to the component type's size
              and add an adjacent padding component if needed.

KP-504a1-F606-005 Strange warnings on predefined primitives in instantiation

  Problem:    The instantiation of a formal type which derives from a parent
              interface with an actual interface derived from the same parent
              causes late declaration warnings on all predefined primitive
              operations of the actual.

  Status:     This was fixed in 6.0 on 2006-06-13

  Workaround: Introduce a null record derivation from the old actual, use the
              new derived type as the actual in the instantiation.

KP-504a1-F605-019 Task image corrupted in task subcomponent

  Problem:    If a task type is a subcomponent of a record type, and some other
              component of the record is an array initialized with an aggregate
              with non-static components, the name of the task obtained from
              Task_Identification may be partially corrupted.

  Status:     This was fixed in 6.0 on 2006-06-14

  Workaround: Introduce a temporary for the value of the aggregate, and
              use the temporary for the component initialization.

KP-504a1-F605-001 Crash on task entry family constrained by discriminant

  Problem:    Compiler crashes on an entry family when both its bounds are
              given by discriminants of the enclosing task.

  Status:     This was fixed in 6.0 on 2006-06-21

  Workaround: Compile unit with -gnatp flag.

KP-504a1-F531-017 Failure from gnatbind when using gnatmake -C -P

  Problem:    When using gnatmake -C with project files, and a runtime source
              has been copied in one of the project source directory, the
              invocation of gnatbind will fail.

  Status:     This was fixed in 6.0 on 2006-08-06

  Workaround: Do not use switch -C when a runtime source is copied in a project
              source directory.

KP-504a1-F530-032 ASIS problem with static expressions in expanded generic

  Problem:    ASIS can not correctly classify and decompose static expressions
              located in expanded generics in case if these expressions
              contain references to named numbers and/or function calls.
              ASIS also can not correctly return string images of terminal
              components of static expressions

  Status:     This was fixed in 6.0 on 2006-06-26

  Workaround: Locate the corresponding expression in template and analyze it.

KP-504a1-F529-005 Asis.Elements.Enclosing_Element problem

  Problem:    Asis.Elements.Enclosing_Element may blow up when applied to
              artificial declarations used to pass actual generic parameters
              (or to components thereof)

  Status:     This was fixed in 6.0 on 2006-05-29

  Workaround: Reimplement Enclosing_Element on the base of Traverse_Element.

KP-504a1-F525-004 Asis.Expressions.Corresponding_Expression_Type problem

  Problem:    Asis.Expressions.Corresponding_Expression_Type blows up if its
              argument is a reference to a named number.

  Status:     This was fixed in 6.0 on 2006-05-26

  Workaround: Use a wrapper query for Corresponding_Expression_Type. This query
              should catch the exception and in case if the argument is of
              An_Identifier kind, check if its declaration is a number
              declaration and return the corresponding universal type
              declaration.

KP-504a1-F523-002 Wrong Ada 2005 syntax accepted (abstract interface)

  Problem:    Interfaces are by definition abstract types and hence they don't
              need the additional reserved word "abstract". The frontend
              erroneously accepts the following type declaration as correct:
              "type Iface is abstract interface".

  Status:     This was fixed in 6.0 on 2006-05-23

  Workaround: Just remove the word abstract from your sources. Its addition
              does not affect to the code generated by the compiler.

KP-504a1-F517-002 VMS linker wrapper links shared libxdecgnat with static libs

  Problem:    The VMS linker wrapper prefers shared libs if both shared and
              static libs of the same name exist. This can result in
              inconsistent behavior since the default GNAT RTL behavior is to
              link statically.

  Status:     This was fixed in 6.0 on 2006-06-10

  Workaround: Force a static link by renaming libdecgnat.exe out of the way.

KP-504a1-F516-028 gnaampchop fails if gcc and gnat front end are not available

  Problem:    For the AAMP target only, the source chop tool fails to operate
              unless gcc and gnat1 are available. The AAMP version of gnatchop
              needs to invoke the GNAAMP compiler.

  Status:     This was fixed in 6.0 on 2006-06-05

  Workaround: Ensure that gcc and gnat1 are available on the executable path
              when using gnaampchop.

KP-504a1-F513-001 Pure/Preelaborate not set for subprogram renaming

  Problem:    If a library level renaming of a subprogram or generic subprogram
              renames a subprogram for which pragma Preelaborate or pragma Pure
              is given, this is not propagated to the renaming entity with the
              result that a unit with'ing the renaming entity may get a bogus
              complaint about missing Pure or Preelaborate.

  Status:     This was fixed in 6.0 on 2006-05-14

  Workaround: Use the original package name in the with statement, and if a
              renaming is required, do the renaming within the unit referencing
              the subprogram.

KP-504a1-F511-005 gnatpp blows up on string literals ending with '['

  Problem:    gnatpp blows up if the argument source contains a string literal
              having '[' as its last character.

  Status:     This was fixed in 6.0 on 2006-05-12

  Workaround: Avoid using such literals. If needed, replace such literals
              with concatenation of the beginning of the literal and
              character '['.

KP-504a1-F508-012 gnatpp fails to reformat private packages

  Problem:    gnatpp blows up when called for a private package.

  Status:     This was fixed in 6.0 on 2006-05-08

  Workaround: If possible, make the package non-private (by removing the
              keyword 'private', apply gnatpp and make the result private
              again. Otherwise do not apply gnatpp to private packages.

KP-504a1-F508-003 Compiler crash on limited_with clause and instantiation

  Problem:    The compiler crashes on the instantiation of a generic package
              in a second package, one of the actual generic parameters being
              a type defined in the latter package containing a circular type
              definition through a limited_with clause of a third package in
              turn containing a regular with clause of the second one.

  Status:     This was fixed in 6.0 on 2006-05-09

  Workaround: Move the instantiation of the generic package into the third
              package and apply the workaround for KP-504a1-F508-001.

KP-504a1-F508-001 Compiler crash on limited_with clause and instantiation

  Problem:    The compiler crashes on the instantiation of a generic package
              in a second package which is subject to a limited_with clause
              in a third package, one of the actual generic parameters being
              imported from the third package into the second one through a
              regular with clause and containing a circular type definition.

  Status:     This was fixed in 6.0 on 2006-05-09

  Workaround: Add a forward type declaration in the second package, before
              the instantiation of the generic package, for the type involved
              in the circular type definition.

KP-504a1-F427-008 ASIS problem with actual parameters in instantiations

  Problem:    Asis.Expressions.Corresponding_Name_Definition may return wrong
              result or blow-up when applied to a reference to a generic
              parameter in the expanded generic instantiation.

  Status:     This was fixed in 6.0 on 2006-05-04

  Workaround: Compute the defining names manually, using other ASIS queries,
              use the generic unit and the instantiation to simulate macro
              substitution.

KP-504a1-F426-009 Crash on discriminant of protected type in semantics only

  Problem:    Compiler abort on a a reference to a discriminant of a limited
              type completed with a protected type, when the discriminant is
              used to constrain a private component, and expansion is disabled.

  Status:     This was fixed in 6.0 on 2006-04-28

  Workaround: Compile the unit with expansion enabled, or else make
              type non-private.

KP-504a1-F424-041 GNAAMP generates linker error for exceptions with same name

  Problem:    On the AAMP target only, the linker reports an error complaining
              about multiple definitions for the same symbol when a subprogram
              contains multiple exception declarations with the same simple
              name (usually occurring within multiple block statements).

  Status:     This was fixed in 6.0 on 2006-11-01

  Workaround: Change the exception names so as to avoid the naming conflict.

KP-504a1-F424-037 GNAAMP fails on renamings of packed array components

  Problem:    On the AAMP target only, the compiler blows up when processing a
              renaming when the renamed object is the component of a packed
              array.

  Status:     This was fixed in 6.0 on 2006-07-19

  Workaround: Reference the renamed object directly.

KP-504a1-F424-035 GNAAMP fails on conversions from unpacked arrays to String

  Problem:    On the AAMP target only, the compiler blows up when translating
              conversions from an unpacked array of characters to predefined
              type String.

  Status:     This was fixed in 6.0 on 2006-07-11

  Workaround: Either apply pragma Pack to the unpacked array type or declare
              a temporary of type String and write a loop to assign characters
              one by one from the unpacked array to the String.

KP-504a1-F424-034 GNAAMP fails on assignment for a private array type

  Problem:    On the AAMP target only, the compiler blows up when translating
              an assignment statement where the type is a private type whose
              full type is an array type.

  Status:     This was fixed in 6.0 on 2006-07-12

  Workaround: Change the type to a nonprivate type.

KP-504a1-F424-019 GNAAMP fails on unconstrained array return with modular index

  Problem;    On the AAMP target only, the compiler blows up when processing
              return statements in functions with an unconstrained array result
              when the array type has an index of a modular (unsigned) type.

  Status:     This was fixed in 6.0 on 2006-11-02

  Workaround: Use a signed integer type for the array index type in place of
              the modular integer type.

KP-504a1-F424-018 GNAAMP fails on packed array components as out mode actuals

  Problem:    On the AAMP target only, the compiler blows up when processing
              an actual parameter that is a component of a packed array.

  Status:     This was fixed in 6.0 on 2006-07-25

  Workaround: Assign the packed component to a temporary and pass the temporary
              as the actual parameter. Then assign the temporary back to the
              original packed component after the procedure call.

KP-504a1-F424-017 GNAAMP compiler does not handle non-static record subtypes

  Problem:    On the AAMP target only, a subtype of a variant record type
              where the discriminant constraint has at least one non-static
              value gives strange error messages about incorrect sizes, or
              generates wrong code.

  Status:     This was fixed in 6.0 on 2006-07-01

  Workaround: Avoid the use of such dynamic subtypes. A possible replacement
              is an explicit test of the discriminant, and then declare the
              subtype with the appropriate static value selecting a particular
              variant.

KP-504a1-F424-015 GNAAMP compiler handles floating-point 'Valid incorrectly

  Problem:    On the AAMP target only, the compiler was incorrectly evaluating
              the Valid attribute for floating-point types (including implicit
              uses of the attriute within membership tests).

  Status:     This was fixed in 6.0 on 2006-06-01

  Workaround: Use an unchecked conversion to a record to extract the exponent
              and test that either the exponent is nonzero or that the whole
              floating-point value is zero. Replace floating-point membership
              tests with explicit tests of the desired range.

KP-504a1-F424-014 GNAAMP compiler blows up on aggregates of type extensions

  Problem:    On the AAMP target only, the compiler blows up when processing
              a component association for an inherited component in an
              aggregate whose type is a tagged type extension.

  Status:     This was fixed in 6.0 on 2006-07-28

  Workaround: Declare an object of the type extension and initialize components
              by individual assignments, and replace the aggregate with the
              name of the object.

KP-504a1-F424-001 Asis.Expressions.Corresponding_Name_Definition problem.

  Problem:    Asis.Expressions.Corresponding_Name_Definition returns wrong
              result when applied to a reference to a (full view of a) private
              type that is used as index subtype in array definition

  Status:     This was fixed in 6.0 on 2006-04-26

  Workaround: Compute the defining names manually, using other ASIS queries.

KP-504a1-F421-018 ASIS problem with pragma Debug.

  Problem:    ASIS may blow up when decomposing the argument of pragma
              Debug.

  Status:     This was fixed in 6.0 on 2006-04-22

  Workaround: Comment out such pragmas in analyzed code.

KP-504a1-F420-015 GNAAMP generates incorrect debug info for component subtypes

  Problem:    On the AAMP target only, the compiler emits a decl-id for a
              record component's base type rather than its subtype. This can
              lead to the display of incorrect bounds information when looking
              at components that have an array subtype.

  Status:     This was fixed in 6.0 on 2006-04-27

  Workaround: Determine the bounds of components by looking at the source
              file or at the subtype associated with the component.

KP-504a1-F418-013 Spurious error on subtype conversion in instance

  Problem:    Compiler rejects an instantiation that contains a conversion
              of a literal to a subtype of a private type whose full view
              is an integer type.

  Status:     This was fixed in 6.0 on 2006-06-11

  Workaround: Use base type directly.

KP-504a1-F417-006 Inconsistent value for Storage size of current task

  Problem:    If the Storage_Size of a task is set with the corresponding
              pragma in a task declaration, and the value depends on a
              discriminant of the task, then the value reported by the
              Storage_Size attribute in the task body does not yield the
              proper value for the current task.

  Status:     This was fixed in 6.0 on 2006-05-11

  Workaround: In the task body, instead of the attribute reference, use
              the same expression as in the pragma,

KP-504a1-F412-008 Bad switch passed by gnatmake to the compiler

  Problem:    gnatmake switch -R was incorrectly processed and was passed
              to the compiler that does not recognize this switch.

  Status:     This was fixed in 6.0 on 2006-06-12

  Workaround: Avoid using gnatmake switch -R.

KP-504a1-F412-003 Spurious error on conversion of concatenation in instance

  Problem:    Compiler rejects an instantiation when the generic contains
              a type conversion of a concatenation operation, one operand
              of which is a string literal, and the other is a static
              string constant of a different type than the target of the
              conversion.

  Status:     This was fixed in 6.0 on 2006-04-12

  Workaround: Apply the conversion to the static operand only, rather than
              to the concatenation operation.

KP-504a1-F410-018 Crash on conversion of float literal with -gnatVa

  Problem:    In certain unusual situations, a type conversion which converts
              a real literal to an explicit float type may cause a compiler
              crash if validity checks are turned on (-gnatVa switch set).

  Status:     This was fixed in 6.0 on 2006-04-11

  Workaround: Use a type qualification rather than a conversion (for example
              write Float'(0.0) instead of Float (0.0)). This is a preferable
              coding style in this case anyway.

KP-504a1-F410-011 ASIS problem with class-wide types in expanded instantiations

  Problem:    If a formal type is an unconstrained private type, and the actual
              type is 'Case attribute, then ASIS does not correctly represent
              the references to the formal type substituted with the actual
              class-wide type in the expanded generic.

  Status:     This was fixed in 6.0 on 2006-04-26

  Workaround: Detect class-wide types represented by 'Class attribute in the
              generic instantiations and then emulate the generic instantiation
              using the code of generic and the reference to actual type.

KP-504a1-F407-016 ASIS problem with inherited subprograms

  Problem:    In case if the explicit declaration of a parent subprogram is
              a renaming declaration, and the renamed subprogram has intrinsic
              calling convention, ASIS can not see the implicit declarations
              of subprograms inherited from this renaming, and it returns
              wrong results when processing references to such inherited
              subprograms

  Status:     This was fixed in 6.0 on 2006-05-29

  Workaround: Manually analyze type derivation using ASIS structural queries.

KP-504a1-F407-011 Asis.Expressions.Corresponding_Name_Definition problem

  Problem:    Asis.Expressions.Corresponding_Name_Definition blows up when
              applied to a discriminant reference in a discriminant constraint
              that is a part of a derived type definition in case if a parent
              type is a task or protected type.

  Status:     This was fixed in 6.0 on 2006-04-09

  Workaround: Compute the defining name manually (get the parent type
              declaration and traverse its discriminant part).

KP-504a1-F406-023 Executable_Suffix not always taken into account

  Problem:    When in a project file Executable_Suffix and
              Executable ("<main>") are both specified, the executable for
              <main> does not always end up with the Executable_Suffix.

  Status:     This was fixed in 6.0 on 2006-04-12

  Workaround: Specify an executable name with the expected Executable_Suffix.

KP-504a1-F406-012 Asis.Expressions.Corresponding_Name_Definition problem

  Problem:    Asis.Expressions.Corresponding_Name_Definition blows up when
              applied to a component name from a record aggregate in case
              if the aggregate type is defined by a private extension
              declaration.

  Status:     This was fixed in 6.0 on 2006-04-08

  Workaround: Compute the defining name manually (get the aggregate type
              and traverse the full view of the type).

KP-504a1-F406-003 gnatpp can not process new Ada 2005 keywords in Ada 95 code

  Problem:    gnatpp may blow up or generate wrong results on new Ada 2005
              keywords (INTERFACE, OVERRIDING, SYNCHRONIZED) used as
              identifiers in Ada 95 code

  Status:     This was fixed in 6.0 on 2006-04-06

  Workaround: Systematically rename such identifiers to avoid conflicts with
              new Ada 2005 keywords.

KP-504a1-F404-027 GNAAMP compiler mishandles conversions with small composites

  Problem:    On the AAMP target only, the compiler generates incorrect code
              for an unchecked conversion from small packed composite types
              with unused bits to scalar types.

  Status:     This was fixed in 6.0 on 2006-04-14

  Workaround: Add padding fields for the unused bits in the composite type
              and ensure that the padding fields are initialized to zero.

KP-504a1-F329-007 Bad record parameter and return values in GDB on x86_64

  Problem:    On the x86_64 platform, GDB will sometimes truncate records
              returned from subprograms or passed to subprograms if they
              have lengths of between 9 and 16 bytes.

  Status:     This was fixed in 6.0 on 2006-04-04

  Workaround: Add debugging subprograms that perform the desired calls,
              taking the offending arguments in global debugging variables
              declared for the purpose (and possibly returning their
              results there). Alternatively, these subprograms can take
              pointers to their arguments.

KP-504a1-F328-009 Compiler crashes with unconstrained packed array of booleans

  Problem:    The compiler crashes at -O1 when compiling a nested procedure
              referencing an element of an unconstrained packed array of
              booleans that is passed as an argument to its parent procedure.

  Status:     This was fixed in 6.0 on 2006-03-30

  Workaround: Compile the file at -O0 or -O2.

KP-504a1-F324-018 Crash on call to abstract function with anonymous result

  Problem:    The compiler aborts on a dispatching call to an abstract function
              with a class-wide anonymous access result.

  Status:     This was fixed in 6.0 on 2006-03-27

  Workaround: Replace the abstract function with a nonabstract function.

KP-504a1-F323-012 Record argument in GDB call crashes application

  Problem:    When evaluating a call that involves passing a record
              argument that itself is a subprogram parameter, GDB will
              pass a copy of the record rather than a reference to the
              record, causing the debugged application to crash. Likewise,
              evaluating a nested function call, in which a record-valued
              subprogram parameter is the return value of a function, can
              also cause the application to crash.

  Status:     This was fixed in 6.0 on 2006-03-28

  Workaround: If a command such as "print foo(bar)", where bar itself is
              a record-valued parameter of the current subprogram call, causes
              a crash, you can explicitly pass bar by reference using
              "print foo(bar'access)".  When a nested call crashes, try
              instead doing it in stages: change "print foo(baz(bar))"
              to "print baz(bar)" followed by "print foo($)".

KP-504a1-F323-011 Crash on controlled extension and interface

  Problem:    Compiler aborts on the declation of a type extension, when the
              parent type has a controlled component, the extension has another
              controlled component, and the derived type also implements an
              interface.

  Status:     This was fixed in 6.0 on 2006-03-24

  Workaround: Place all controlled components in the same type, or make the
              component in the extension non-controlled.

KP-504a1-F322-009 Host_Error in Get_Host_By_Name on vxWorks

  Problem:    The GNAT.Sockets.Get_Host_By_Name function on vxWorks always
              raises a Host_Error exception.

  Status:     This was fixed in 6.0 on 2006-03-23

  Workaround: Do not use Get_Host_By_Name.

KP-504a1-F319-006 Wide_[Wide_]Character'Value fails if low bound not 1

  Problem:    If the string given to Wide_[Wide_]Character'Value has a low
              bound other than one (typical case is when a slice is used),
              then the value may be incorrect, or an exception raised.

  Status:     This was fixed in 6.0 on 2006-03-19

  Workaround: If a slice is passed, explicitly convert its low bound to one,
              before applying the 'Value attribute.

KP-504a1-F319-005 Spitbol pattern failure with one character slice

  Problem:    If a function such as & is called in the spitbol pattern matcher
              (GNAT.Spitbol.Patterns), and a string of length one with a low
              bound other than one (typically the result of a slice), then the
              behavior may be incorrect.

  Status:     This was fixed in 6.0 on 2006-03-19

  Workaround: Use the character form of the routine instead of the string
              version, or explicitly slide the low bound to one with a type
              conversion.

KP-504a1-F319-004 Protected type with dynamic priority fails to link

  Problem:    If a protected type has a priority pragma whose expression
              is non-static,the linker may report an unsatisfied external

  Status:     This was fixed in 6.0 on 2006-03-19

  Workaround: If the expression does not depend on a discriminant of the type,
              define a temporary outside of the type to hold the expression.
              If the expression uses the discriminant in a larger expression,
              introduce a separate discriminant to hold the desired value.

KP-504a1-F317-019 Wrong call to protected subprogram through access type

  Problem:    The use of access to protected subprograms to reference
              subprograms of a given protected object is wrong if the
              initialization of the access value is performed inside
              an entry of the same protected object.

  Status:     This was fixed in 6.0 on 2006-03-21

  Workaround: Move the code that initializes the access value to a
              protected subprogram (instead of a protected entry).

KP-504a1-F317-012 Compiler crashes on some front-end inlining cases

  Problem:    If a procedure has no declarations in the declarative part of
              its body, and a call to that procedure requires a transient
              scope (for example, when a formal has an unconstrained type
              and the corresponding actual is a call to a function with
              an unconstrained return type), enabling front-end inlining
              for that subprogram causes a GIGI abort 303.

  Status:     This was fixed in 6.0 on 2006-03-31

  Workaround: In most cases, it is preferrable to use back-end inlining
              (-gnatn) rather than front-end inlining (-gnatN). For cases
              where front-end inlining must be used, a work-around consists
              in adding a dummy local variable declaration in the body of
              the inlined procedure.

KP-504a1-F316-012 Asis.Text problems with [" character sequence in comments

  Problem:    Queries from Asis.Text blow up if they have to detect span or
              to return a text image that contains [" character sequence in
              the text of a comment.

  Status:     This was fixed in 6.0 on 2006-03-20

  Workaround: Avoid this character sequence in comments.

KP-504a1-F315-012 GNAAMP compiler crash on indexing bit-array formal parameter

  Problem:    On the AAMP target only, the compiler back end blows up when
              translating an indexing of a formal parameter whose type is a
              bit-packed array type.

  Status:     This was fixed in 6.0 on 2006-03-16

  Workaround: Assign the formal parameter to a temporary array of the same type
              and perform loads and stores on elements of the temporary. If the
              formal has mode out or in out, then assign the temporary back to
              the formal before returning.

KP-504a1-F314-024 Compiler crash on non-static priority pragma

  Problem:    Compiler aborts on a protected type with a pragma priority,
              when the expression in the pragma is non-static and includes a
              reference to the discriminant of the protected type.

  Status:     This was fixed in 6.0 on 2006-03-21

  Workaround: Introduce a separate discriminant, and specify value of priority
              as a discriminant reference rather than a complex expression.

KP-504a1-F310-013 Debugger cannot print address of array element

  Problem:    The debugger is unable to print the address of any element
              of an array, and prints an error message saying "Attempt to
              take address of non-lval".

  Status:     This was fixed in 6.0 on 2006-03-14

  Workaround: Print the element value first, and then print the address
              of that value using the value history. For instance, the
              following user-defined command will print the address of
              any expression:

                define p_address
                   p $arg0
                   p $'address
                end

              It can be used as follow:

                (gdb) p_address a(2)

KP-504a1-F310-011 Missing type conversion in in-mode actuals

  Problem:    The frontend does not expand the actual of in-mode actuals
              that are type conversions.

  Status:     This was fixed in 6.0 on 2006-03-18

  Workaround: Use auxiliary variables to evaluate the conversion and
              use them to pass the actual of the call to the target
              subprogram.

KP-504a1-F310-007 Crash on private subtype whose full view is protected

  Problem:    Compiler aborts on a dereference whose prefix is an access to
              a constrained subtype S of a limited type L whose full view is a
              protected type with discriminants, when the dereference occurs
              within a scope nested within the scope of definition of S.

  Status:     This was fixed in 6.0 on 2006-06-20

  Workaround: Introduce an explicit subtype for the limited type L itself,
              and declare S as an access to that subtype.

KP-504a1-F310-002 Asis.Declarations.Corresponding_Type_Declaration problem

  Problem:    Asis.Declarations.Corresponding_Type_Declaration blows up when
              applied to a full type declaration located immediately within
              a child subprogram.

  Status:     This was fixed in 6.0 on 2006-03-10

  Workaround: For such a full type declaration, traverse the declaration
              part of the corresponding procedure and try to locate the
              corresponding incomplete type declaration manually by applying
              Corresponding_Type_Declaration to all the incomplete type
              declarations that follow the full type declaration.

KP-504a1-F310-002 Asis.Expressions.Prefix problem

  Problem:    When applied to an infix call of a user-defined operator
              function, this query return the result that causes the
              blow-up of Asis.Expressions.Corresponding_Name_Definition.
              (The result itself looks correct in all aspects except that
              it is impossible to get the corresponding defining operator
              symbol.

  Status:     This was fixed in 6.0 on 2006-03-10

  Workaround: Do not apply Corresponding_Name_Definition to the result
              of the call to Prefix applied to a function call. Instead,
              apply Corresponding_Called_Function to the whole function
              call Element.

KP-504a1-F308-044 Wrong expansion of equality in records with variants

  Problem:    The expansion of records with variants needs the internal
              generation of a function that provides the functionality of
              the equality operator. The generation of such internal function
              is wrong in case of a record associated with a private type that
              has some component whose index is also a private type.

  Status:     This was fixed in 6.0 on 2006-04-05

  Workaround: Avoid the use of this feature.

KP-504a1-F308-013 Spurious error with expanded name and child unit

  Problem:    Compiler rejects an expanded name that appears in a child body B,
              when the prefix of the name denotes an ancestor child unit A,
              and B contains a subunit whose proper body has a with clause
              for another child unit that is a descendant of A. Error message
              indicates a missing with clause for A.

  Status:     This was fixed in 6.0 on 2006-03-08

  Workaround: Add with clause for A.

KP-504a1-F306-005 Debugger unable to print backtrace after task switch

  Problem:    The debugger is sometimes unable to compute the backtrace
              after switching to a task. The debugger shows that it has
              stopped at 0xffffe410, and cannot print the name of the
              routine associated to this address, therefore printing
              "??" instead of the symbol name. This only occurs on
              certain x86 GNU/Linux distributions, such as SUSE ES9.

  Status:     This was fixed in 6.0 on 2006-03-14

  Workaround: Request a debugger wavefront.

KP-504a1-F303-002 Asis problems with returning text images

  Problem:    If the source text of the analyzed Ada source uses upper half
              wide characters, ASIS queries returning text images may return
              wrong results for text fragments containing these upper half
              characters.

  Status:     This was fixed in 6.0 on 2006-03-04

  Workaround: Use only brackets encoding for analyzed Ada units. Post-process
              text images returned by ASIS queries and convert bracket
              encoding sequences into the corresponding Wide_Character values.

KP-504a1-F301-010 Crash on validity check on indexing of function result

  Problem:    Compiler aborts on an actual in a call that is an indexing of
              of a function call that returns a packed boolean array.

  Status:     This was fixed in 6.0 on 2006-03-24

  Workaround: Introduce a temporary to hold the result of the function call,
              or compile unit without validity checks.

KP-504a1-F301-004 Blowup from special chars for Compile_Time_Warning

  Problem:    The occurrence of non alphanumeric characters in the string
              argument for pragma Compile_Time_Warnings can result in an abort
              at compile time, or incorrect message output.

  Status:     This was fixed in 6.0 on 2006-04-01

  Workaround: Avoid the use of characters other than letters, digits, spaces
              and ASCII.LF (to separate lines).

KP-504a1-F228-009 Wrong interface conversion with limited types

  Problem:    Abstract interface type conversions applied to limited types
              are not well supported by the frontend.

  Status:     This was fixed in 6.0 on 2006-03-02

  Workaround: Avoid the use of this feature.

KP-504a1-F226-011 Asis.Expressions.Name_Image problem on character literals

  Problem:    Asis.Expressions.Name_Image may return wrong value when
              applied to a wide character literal that is outside the
              first 256 values of Wide_Character

  Status:     This was fixed in 6.0 on 2006-02-26

  Workaround: Get the text image of enclosing element and separate the
              image of such a literal manually

KP-504a1-F224-014 Compiler loops on elaboration check for generic subunit

  Problem:    Compiler goes into an infinite loop when compiling a generic
              unit that has a subunit whose proper body contains a call or
              an instantiation in its elaboration code.

  Status:     This was fixed in 6.0 on 2006-02-28

  Workaround: Compile generic unit without elaboration checks, or place
              subunit in body of parent.

KP-504a1-F221-003 Problem with /search in gnatmake [VMS specific]

  Problem:    Gnatmake /search finds files only on the first equivalence
              of a search path logical name.

  Status:     This was fixed in 6.0 on 2006-03-29

  Workaround: Use a sequence of single equivalence logical names.

KP-504a1-F218-003 Compiler crash instantiating package on dynamic array element

  Problem:    The compiler crashes on the instantiation of a generic package
              for which the generic parameter is In Out and the actual an
              element of a dynamic array.

  Status:     This was fixed in 6.0 on 2006-03-01

  Workaround: Use an element of a static array as the actual parameter.

KP-504a1-F216-030 Debugger crash using 'First or 'Last attribute on array

  Problem:    The debugger crashes when applying the 'First or 'Last attribute
              to an array whose index type is an enumerated type.

  Status:     This was fixed in 6.0 on 2006-02-16

  Workaround: Use "ptype Your_Array" where Your_Array is the name of
              the array from which you would like to get the first
              or last bound. The result will contain both bounds.

KP-504a1-F216-025 Locate_Exec_On_Path crashes when no PATH

  Problem:    When environment variable PATH does not exist, a call to
              Locate_Exec_On_Path fails with a segment violation.

  Status:     This was fixed in 6.0 on 2006-02-21

  Workaround: Ensure that environment variable PATH is always defined.

KP-504a1-F216-002 Derivations of limited interfaces in private types

  Problem:    The frontend does not manage well derivations of limited
              interfaces found in the private part of a package.

  Status:     This was fixed in 6.0 on 2006-02-17

  Workaround: Move the full-type declaration to the public part of the
              package.

KP-504a1-F215-037 Virtual memory exhausted debugger internal error (AIX)

  Problem:    On AIX, the debugger may report an internal error where
              it cannot allocate more memory because the virtual memory
              has been exhausted. This happens when debugging very large
              applications. The size of the program is such that the
              debugger needs to allocate large amounts of memory and hits
              the default maximum user data area size.

  Status:     This was fixed in 6.0 on 2006-02-23

  Workaround: Request an upgraded version of the debugger where the limit
              has been increased to the maximum supported by the system.

KP-504a1-F215-016 Debugger cannot print value spread across several locations

  Problem:    On x86-linux, if used at a high level of optimization,
              the compiler sometimes distributes the actual value of certain
              variables across several locations. The debugger was unable
              to print the value of such variables, and was printing an
              error instead reporting that "The value of variable [...]
              is distributed across several locations, and GDB cannot
              access its value".

  Status:     This was fixed in 6.0 on 2006-03-14

  Workaround: Compile your application at a lower level of optimization.

KP-504a1-F214-027 Incomplete types in limited-withed units

  Problem:    The frontend reports errors in incomplete types declared in
              limited-withed units.

  Status:     This was fixed in 6.0 on 2006-02-19

  Workaround: Avoid using such Ada 2005 features conjointly.

KP-504a1-F214-014 Spurious errors in the presence of abstract operations

  Problem:    Compiler misdiagnoses as ambiguous some expressions whose
              operands are all numeric literals, when a user-defined
              operator on a numeric type is declared abstract, and a
              user-defined homonym of the same operator yields some non-
              numeric type.

  Status:     This was fixed in 6.0 on 2006-09-06

  Workaround: Use a type-qualification on the expression.

KP-504a1-F212-003 Component cross-references always marked as read

  Problem:    In the cross-reference information for component references,
              the ALI entries always indicated a read reference even if the
              component reference appeared in a write context (e.g. on the
              left side of an assignment). This affected the output of tools
              (including GPS) that rely on this indication.

  Status:     This was fixed in 6.0 on 2006-04-11

  Workaround: Be aware that for component references, a read indication is to
              be interpreted as a read or write reference.

KP-504a1-F210-023 Compiler crash on call taking aggregate as actual parameter

  Problem:    The compiler crashes on a subprogram call taking an aggregate as
              actual parameter, if the aggregate is of a discriminated subtype
              whose first subtype contains an array with an index type that is
              not a first subtype and bounds that depend on the discriminant.

  Status:     This was fixed in 6.0 on 2006-02-18

  Workaround: Introduce an explicit temporary for the aggregate and use it
              as the actual parameter for the subprogram call.

KP-504a1-F207-021 ASIS: wrong membership test classification and decomposition

  Problem:    If a membership test contains a subtype mark represented by
              an attribute ('Base or 'Class), then ASIS classifies and
              decomposes it as A..._Range_Membership_Test, but not as
              A..._Type_Membership_Test.

  Status:     This was fixed in 6.0 on 2006-02-07

  Workaround: When working with An_In_Range_Membership_Test and
              A_Not_In_Range_Membership_Test Elements, get the
              Membership_Test_Range component of the Element and if it
              is of An_Attribute Expression_Kind, check the attribute
              designator using the corresponding text image.

KP-504a1-F205-004 Aliased objects and components are unconstrained in Ada 2005

  Problem:    When compiling with -gnat05, the compiler should allow the
              declaration of an unconstrained aliased object or component
              when the type has defaulted discriminants (as per AI-363).

  Status:     This was fixed in 6.0 on 2006-02-22

  Workaround: Remove aliased from the declaration (which may necessitate
              using 'Unrestricted_Access in place of 'Access). Alternatively,
              if feasible, declare the discriminated type as the full type
              of a private type without a discriminant part.

KP-504a1-F201-023 Compiler abort when writing expanded tree

  Problem:    In some cases, the compiler will crash with a gigi abort code 122
              when trying to output expanded code (when using the -gnatG or
              -gnatD command line switches).

  Status:     This was fixed in 6.0 on 2006-01-17

  Workaround: Avoid the use of -gnatD / -gnatG in those cases.

KP-504a1-F202-014 Crash on comparison of anonymous access types

  Problem:    Compiler aborts when testing two Ada 2005  anonymous access
              values for equality, when one of them is an access to constant
              and the other is an access to variable.

  Status:     This was fixed in 6.0 on 2006-02-03

  Workaround: Use a named access type for both.

KP-504a1-F201-020 ASIS problem with goto statements and labels

  Problem:    ASIS cannot correctly process a sequence of statements
              that makes up an infinite loop by means of a goto statement
              that transfers control backwards.

  Status:     This was fixed in 6.0 on 2006-02-04

  Workaround: This always corresponds to a clear error (infinite loop) in the
              source program being examined, so correct the error in the source
              program before running an ASIS application.

KP-504a1-F201-009 Failure of 'Value to detect certain incorrect parameters

  Problem:    Certain cases where the 'Value attribute is supposed to raise
              Constraint_Error are not detected.  In particular, blanks are
              incorrectly allowed after a minus sign, and a plus sign is
              incorrectly allowed after a plus or minus sign.  For example,
              Integer'Value("- 5") (with a blank between '-' and '5') is
              supposed to raise Constraint_Error, but it does not.
              This affects 'Value of signed integer types.

  Status:     This was fixed in 6.0 on 2006-02-02

  Workaround: Avoid passing these incorrect strings to the 'Value attribute.

KP-504a1-F130-005 Visibility of = operator with abstract interfaces

  Problem:    The internal frontend management of primitives associated with
              abstract interface primitives causes dummy conflicts during
              the analysis of the equality operator.

  Status:     This was fixed in 6.0 on 2005-02-01

  Workaround: Define your Is_Equal primitive for this purpose.

KP-504a1-F129-004 Normalized record aggregates in ASIS

  Problem:    Asis.Expressions.Record_Component_Associations always returns
              Nil_Element_List (even if the argument aggregate is not empty).

  Status:     This was fixed in 6.0 on 2006-01-30

  Workaround: Do not call Asis.Expressions.Record_Component_Associations with
              Normalized => True. Use non-normalized list of record component
              associations and the declaration of the aggregate type to
              construct normalized associations manually

KP-504a1-F127-022 Asis.Declarations.Generic_Actual_Part problem (Normalized ON)

  Problem:    Asis.Declarations.Generic_Actual_Part returns wrong normalized
              associations for formal with box default

  Status:     This was fixed in 6.0 on 2006-01-28

  Workaround: Do not call Asis.Declarations.Generic_Actual_Part with
              Normalized => True.

KP-504a1-F127-002 Protected subtypes and task subtypes with abstract interfaces

  Problem:    Protected subtypes and task subtypes implementing interfaces are
              not well supported by the frontend.

  Status:     This was fixed in 6.0 on 2006-02-16

  Workaround: Use protected types and task types instead of subtypes.

KP-504a1-F126-007 Wrong default initialization of aggregates

  Problem:    The default initialization of arrays whose component do not
              require initialization code was not well handled by the frontend.

  Status:     This was fixed in 6.0 on 2006-01-30

  Workaround: Avoid the use of the mbox in case of arrays of predefined Ada
              types.

KP-504a1-F126-005 Wrong management of overloaded function returning access type

  Problem:    The frontend fails to disambiguate overloaded functions returning
              access types.

  Status:     This was fixed in 6.0 on 2006-01-26

  Workaround: Rewrite the overloaded functions as procedures.

KP-504a1-F124-004 ASIS problem with implicit declarations of "/="

  Problem:    ASIS cannot correctly decompose an implicit declaration of the
              "/=" operation that is the complementary operation for explicit
              declaration of "=".

  Status:     This was fixed in 6.0 on 2006-01-26

  Workaround: Use Asis.Extensions.Is_Implicit_Neq_Declaration to detect
              Elements representing these implicit "/=", then use
              Asis.Declarations.Corresponding_Equality_Operator to get to
              the Element representing the corresponding "=" operation and
              get all the parameter and result type information from it (it is
              exactly the same).

KP-504a1-F122-007 ASIS wrongly returns A_Configuration_Compilation unit

  Problem:    ASIS queries from Asis.Compilation_Units (Compilation_Units,
              Library_Unit_Declarations, Compilation_Unit_Bodies) wrongly
              include  A_Configuration_Compilation unit in the result unit
              lists.

  Status:     This was fixed in 6.0 on 2006-02-06

  Workaround: Check Unit_Kind of the elements of the result lists returned by
              these queries and filter out  A_Configuration_Compilation unit

KP-504a1-F120-014 Function with controlling result and overriding

  Problem:    When a function with a controlling result is also a primitive
              operation of some untagged type, and the untagged type is
              derived, the inherited primitive operation for the derived
              untagged type is incorrectly marked as requiring overriding
              when the type derivation occurs after the tagged type declaration
              and in the same declarative part.

  Status:     This was fixed in 6.0 on 2006-01-31

  Workaround: Declare the derived untagged type before the tagged type, or in
              a different declarative part (for example in a nested package).

KP-504a1-F120-006 Problem in with of Text_IO in Ada 2005 mode

  Problem:    The file text_io.ads had a pragma Ada_95, which caused trouble
              by being improperly inherited by the client, so that subsequent
              Ada 2005 dictions did not always work right.

  Status:     This was fixed in 6.0 on 2006-01-22

  Workaround: Use Ada.Text_IO instead of Text_IO in the with clause.

KP-504a1-F120-005 Spurious warning on package in limited_with clause

  Problem:    Compiler finds that no entities from a package are referenced
              when the package is mentioned in the current context with a
              limited_with clause and gives an incorrect warning message.

  Status:     This was fixed in 6.0 on 2006-01-20

  Workaround: Ignore spurious warning.

KP-504a1-F119-015 Ambiguity not detected in iteration scheme

  Problem:    Compiler fails to diagnose an ambiguity when the bounds in a
              loop are given by overloaded literals from different types.

  Status:     This was fixed in 6.0 on 2006-01-19

  Workaround: Do not write ambiguous bounds, use type qualification on one
              or both of them,

KP-504a1-F117-030 Asis.Declarations.Names problem

  Problem:    Asis.Declarations.Names blows up when applied to a type
              function instantiation, if the defining designator is an
              operator symbol, and the defining name of instantiated generic
              contains a parent name

  Status:     This was fixed in 6.0 on 2006-01-17

  Workaround: Obtain the information about the defining name from the text
              image of the instantiation.

KP-504a1-F117-013 Incorrect value of 'Width for extended precision floats.

  Problem:    The compiler uses the value 25 for the length of the largest
              image of any value of type Long_Long_Float. This is incorrect
              on targets that support IEEE extended precision, where the
              correct value is 26.

  Status:     This was fixed in 6.0 on 2006-01-19

  Workaround: For values larger that 1.0E1000, adjust uses of 'Width by one.

KP-504a1-F116-002 Wrong Constraint_Error on fixed point 'Min at -gnatVa -O

  Problem:    A wrong Constraint_Error is raised by the validity check on the
              result of applying 'Min to a couple of fixed point quantities,
              one of which is not static, and if the code is compiled with
              -gnatVa and optimization enabled.

  Status:     This was fixed in 6.0 on 2006-04-22

  Workaround: Compile the code without optimization or remove the -gnatVa
              switch.

KP-504a1-F111-005 Illegal 'Access for access-to-subprogram type not flagged

  Problem:    An Access attribute in a generic body applied to a subprogram
              declared in the generic is illegal when the type of the attribute
              is declared outside of the generic unit, but the compiler is not
              always detecting the error.

  Status:     This was fixed in 6.0 on 2006-01-13

  Workaround: Avoid using illegal Access attributes. One alternative is to
              use the GNAT-specific attribute Unrestricted_Access in place
              of Access. When compiling with -gnat05, in some cases it may
              be possible to change subprograms that are passed an illegal
              Access attribute to have a formal with an anonymous access-
              to-subprogram type rather than a named access type.

KP-504a1-F110-018 Asis.Declarations.Corresponding_Type_Declaration problem

  Problem:    Asis.Declarations.Corresponding_Type_Declaration blows up
              when applied to a type declaration from the predefined
              Standard package.

  Status:     This was fixed in 6.0 on 2006-01-15

  Workaround: Use a wrapper query that checks if the argument is from
              Standard and returns Nil_Element in this case.

KP-504a1-F109-030 Asis.Statements.Corresponding_Called_Entity problem

  Problem:    Asis.Statements.Corresponding_Called_Entity returns Nil_Element
              when applied to a call to a formal subprogram in an
              instantiation in case if the corresponding actual is a task
              entry.

  Status:     This was fixed in 6.0 on 2006-01-11

  Workaround: Try to get the called entity using other ASIS queries.

KP-504a1-F109-024 Asis.Expressions.Corresponding_Expression_Type problem

  Problem:    Asis.Expressions.Corresponding_Expression_Type returns
              Nil_Element when applied to a A_String_Literal that is a part of
              a static string expression

  Status:     This was fixed in 6.0 on 2006-01-23

  Workaround: Get the type of enclosing expression Element.

KP-504a1-F109-021 Asis.Text.Compilation_Span fails on Standard

  Problem:    Asis.Text Compilation_Span and Compilation_Unit_Span queries
              blow up if the argument Element is from the predefined package
              Standard (the correct result in this case is Nil_Span).

  Status:     This was fixed in 6.0 on 2006-01-12

  Workaround: Before applying these queries check if the argument Element is
              from Standard.

KP-504a1-F109-018 Mechanism_Code cannot be applied to renamed subprogram

  Problem:    The compiler blows up if the Mechanism_Code attribute is applied
              to a renamed subprogram.

  Status:     This was fixed in 6.0 on 2006-01-15

  Workaround: Apply the attribute to the base subprogram, rather than the
              renamed subprogram.

KP-504a1-F109-021 ASIS problem with full declarations of deferred constants

  Problem:    ASIS can not correctly decompose the subtype indication from
              the full declaration of a deferred constant.

  Status:     This was fixed in 6.0 on 2006-01-24

  Workaround: Use the corresponding declaration of a deferred constant to get
              information from this subtype (subtype declarations in deferred
              and corresponding full constant declarations statically match)

KP-504a1-F104-023 Asis.Declarations.Corresponding_Body_Stub problem

  Problem:    Asis.Declarations.Corresponding_Body_Stub blows up if the
              argument Element represents a body that is not Is_Subunit
              Asis.Declarations.Is_Subunit. (It should raise
              ASIS_Inappropriate_Element instead).

  Status:     This was fixed in 6.0 on 2006-01-07

  Workaround: Before calling Corresponding_Body_Stub check that the argument
              Is_Subunit.

KP-504a1-EC14-010 Bad handling of small packed records on nonword boundary

  Problem:    On the AAMP target only, the compiler fails to compile or else
              generates bad code for initializing and addressing small packed
              record components that do not start on a word boundary within
              their containing object.

  Status:     This was fixed in 6.0 on 2006-01-06

  Workaround: Replace the component with a scalar component with the same size
              as the record component and use unchecked conversions between the
              scalar and record type on loads and assignments of the component.

KP-504a1-EC05-027 GNAAMP: wrong code for 'Size of unconstrained array formals

  Problem:    On the AAMP target only, the compiler generates incorrect code
              when applying the Size attribute to unconstrained array formals,
              producing a wrong result of 32 bits.

  Status:     This was fixed in 6.0 on 2006-02-03

  Workaround: Replace the attribute with a multiplication of the array formal's
              length by the size of the component subtype.

KP-504a1-EB28-011 Crash on aggregate with discriminant with dynamic bounds

  Problem:    Compiler aborts on an assignment where the left-hand side has
              a discriminated record type and the bounds of the discriminant
              type are not static, when the right-hand side is an aggregate
              with all static components.

  Status:     This was fixed in 6.0 on 2006-01-13

  Workaround: Introduce a temporary with an explicit constraint that matches
              that of the aggregate, and use the temporary in the assignment.

KP-504a1-EB04-021 Bad code for case statement on type with enum representation

  Problem:    On the AAMP target only, the GNAAMP compiler generates incorrect
              code for case statements when the type is has an enumeration
              representation clause.

  Status:     This was fixed in 6.0 on 2006-02-07

  Workaround: Replace the case statement with an equivalent if statement.
              Alternatively, change the case statement to convert the
              expression to an integer value and modify the choices to be
              appropriate values corresponding to the representation values
              of each choice.

KP-504a1-E329-001 Start debugger command stops at wrong location on AIX

  Problem:    For Ada programs, the "start" debugger command does not stop as
              expected at the beginning of the main procedure, but stops
              instead at the beginning of procedure main() inside the file
              created by the binder. Using the "Start/Continue" button in GPS
              produces the same behavior. This problem only occurs on AIX when
              the binder file was generated in C instead of Ada (-C option of
              gnatbind), and compiled with optimization.

  Status:     This was fixed in 6.0 on 2006-01-06

  Workaround: Compile your binder file without optimization, or use an Ada
              binder file.

KP-504a1-E323-002 Duplicate external symbols

  Problem:    In some cases, the declaration of identically named subprograms
              within anonymous blocks can result in duplicate symbol names for
              the assembler, preventing successful compilation.

  Status:     This was fixed in 6.0 on 2006-04-18

  Workaround: Use different names for the subprograms in question, or do not
              use anonymous blocks (provide names for the blocks).

KP-504a1-E321-015 Printing large object causes debugger crash on VxWorks

  Problem:    On Tornado 653, attempting to print the value of a large
              object (around 1.4kB or more), may cause the target server
              to crash.

  Status:     This was fixed in 6.0 on 2006-02-24

  Workaround: Print your object piece by piece; for instance, print your
              record field by field. Also, deactivate the tooltips in GPS
              to avoid unwanted automatic value queries when hovering
              over the code with your mouse.

KP-504a1-E222-017 Crash on 2nd extension of discriminated tagged record

  Problem:    The compiler crashes compiling the specification of a package
              defining a 2-level extension of a discriminated tagged record
              type whose first level has additional discriminants over the
              base type.

  Status:     This was fixed in 6.0 on 2006-03-07

  Workaround: Limit the extension to one level or do not add new discriminants
              at the first level.

KP-504a1-D907-004 Junk output generated by -gnatR for package renamings

  Problem:    If a unit is a package renaming, then compiling it with -gnatR
              generated junk output with incorrect information. Representation
              information for renaming entities should be suppressed.

  Status:     This was fixed in 6.0 on 2006-04-14

  Workaround: Do not use -gnatR on such units, or simply ignore the output.

KP-504a1-D527-025 Link_Name in pragma Import gets modified for Stdcall

  Problem:    It is not possible to link with a DLL where the Stdcall suffix is
              stripped. The pragma Link_Name parameter for pragma Import gets
              modified (even if the leading underscore is removed the trailing
              Stcall suffix is still appended.)

  Status:     This was fixed in 6.0 on 2006-10-13

  Workaround: Instead of directly linking with such DLLs, use the import
              library that exports properly formed StdCall symbols

KP-504a1-D426-011 Bad run-time behavior with exception in protected entry call

  Problem:    When an exception is raised within a protected entry body and
              propagated to the caller, this will leave the task executing the
              entry in an abort-deferred state, meaning that further select
              constructs may never return (e.g., select or delay).

  Status:     This was fixed in 6.0 on 2006-10-09

  Workaround: Add an exception handler in the protected entry body to avoid
              propagating the exception outside the entry.
