einfo.ads, einfo.adb (First_Tag_Component): Protect the frontend against errors in...
authorJavier Miranda <miranda@adacore.com>
Wed, 15 Feb 2006 09:37:10 +0000 (10:37 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 15 Feb 2006 09:37:10 +0000 (10:37 +0100)
commitba6739078139fc22634a0b45c4c34147a14665df
tree2466e63ba49637bfbc14d86f34bd4a00ef77ddd1
parent1f6a2b51d1d0c2a3a835cc47d34c0c52b0f56945
einfo.ads, einfo.adb (First_Tag_Component): Protect the frontend against errors in the source program...

2006-02-13  Javier Miranda  <miranda@adacore.com>
    Robert Dewar  <dewar@adacore.com>
    Ed Schonberg  <schonberg@adacore.com>

* einfo.ads, einfo.adb (First_Tag_Component): Protect the frontend
against errors in the source program: a private types for which the
corresponding full type declaration is missing and pragma CPP_Virtual
is used.
(Is_Unchecked_Union): Check flag on Implementation_Base_Type.
(Is_Known_Null): New flag
(Has_Pragma_Pure): New flag
(No_Return): Present in all entities, set only for procedures
(Is_Limited_Type): A type whose ancestor is an interface is limited if
explicitly declared limited.
(DT_Offset_To_Top_Func): New attribute that is present in E_Component
entities. Only used for component marked Is_Tag. If present it stores
the Offset_To_Top function used to provide this value in tagged types
whose ancestor has discriminants.

* exp_ch2.adb: Update status of new Is_Known_Null flag

* sem_ch7.adb: Maintain status of new Is_Known_Null flag

* sem_cat.adb (Get_Categorization): Don't treat function as Pure in
the categorization sense if Is_Pure was set by pragma Pure_Function.

From-SVN: r111055
gcc/ada/einfo.adb
gcc/ada/einfo.ads
gcc/ada/exp_ch2.adb
gcc/ada/sem_cat.adb
gcc/ada/sem_ch7.adb