exp_attr.adb (Expand_N_Attribute_Reference): Case Callable and Terminated...
authorHristian Kirtchev <kirtchev@adacore.com>
Wed, 6 Jun 2007 10:24:07 +0000 (12:24 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 6 Jun 2007 10:24:07 +0000 (12:24 +0200)
commit31104818b707112ad18f985f4d1ab3689bf6625e
treef74f8dfa25caf5f5c947cc68976eec95de808602
parent0f95b178458d196841d4d4778cfd1c244088b55b
exp_attr.adb (Expand_N_Attribute_Reference): Case Callable and Terminated...

2007-04-20  Hristian Kirtchev  <kirtchev@adacore.com>
    Javier Miranda  <miranda@adacore.com>
    Robert Dewar  <dewar@adacore.com>

* exp_attr.adb (Expand_N_Attribute_Reference): Case Callable and
Terminated: Add unchecked type conversion from System.Address to
System.Tasking.Task_Id when calling the predefined primitive
_disp_get_task_id.
Disable new Ada 05 accessibility check for JVM.NET targets, which
cannot be implemented in a practical way.
(Expand_N_Attribute_Reference: case Attribute_Tag): The use of 'Tag in
the sources always references the tag of the actual object. Therefore,
if 'Tag is applied in the sources to class-wide interface objects we
generate code that displaces "this" to reference the base of the object.
(Expand_N_Attribute_Reference, case Size): Return specified size if
known to front end.
(Expand_N_Attribute_Reference): The expansion of the 'Address attribute
has code that displaces the pointer of the object to manage interface
types. However this code must not be executed when the prefix is a
subprogram. This bug caused the wrong expansion of the internally
generated assignment that fills the dispatch table when the primitive
is a function returning a class-wide interface type.
(Expand_N_Attribute_Reference:Attribute_Valid): Remove incorrect call to
Set_Attribute_Name for Name_Unaligned_Valid.

From-SVN: r125393
gcc/ada/exp_attr.adb