mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-10 02:40:28 +08:00
[Ada] Do full name qualification of local exception names for LLVM
Exceptions declared within subprograms are associated with objects allocated statically (at the global level), and it's helpful for the LLVM compiler (and likely others, such as CCG) if the exception name is fully qualified, to avoid link name clashes (gcc-based GNAT has always "uniquified" these names). GNAT was using the simple name for local exceptions (as for other local objects), but it now uses fully qualified names for all exceptions. When compiled with the command: gcc -c -gnatG local_exception.adb | grep "local_exception__local_exc" the following output is generated for the test further below: local_exception__local_exc : static exception := ( local_exception__local_exc'unrestricted_access)); procedure Local_Exception is Local_Exc : exception; begin null; end Local_Exception; 2019-08-13 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * exp_dbug.adb (Fully_Qualify_Name): Add full name qualification for the E_Exception case. From-SVN: r274349
This commit is contained in:
parent
4167b07523
commit
93bfc8c003
gcc/ada
@ -1,3 +1,8 @@
|
||||
2019-08-13 Gary Dismukes <dismukes@adacore.com>
|
||||
|
||||
* exp_dbug.adb (Fully_Qualify_Name): Add full name qualification
|
||||
for the E_Exception case.
|
||||
|
||||
2019-08-13 Gary Dismukes <dismukes@adacore.com>
|
||||
|
||||
* exp_aggr.adb (Aggr_Size_OK): Compute the aggregate size using
|
||||
|
@ -1539,6 +1539,7 @@ package body Exp_Dbug is
|
||||
elsif Is_Subprogram (Ent)
|
||||
or else Ekind (Ent) = E_Subprogram_Body
|
||||
or else Is_Type (Ent)
|
||||
or else Ekind (Ent) = E_Exception
|
||||
then
|
||||
Fully_Qualify_Name (Ent);
|
||||
Name_Len := Full_Qualify_Len;
|
||||
|
Loading…
x
Reference in New Issue
Block a user