From: Robert Dewar Date: Tue, 29 Jul 2014 13:11:55 +0000 (+0000) Subject: freeze.adb (Freeze_Entity, [...]): Add a guard to make sure that the Etype of a compo... X-Git-Tag: releases/gcc-5.1.0~6024 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a08bf2de29311011ebdfe1454afb832b0cdbb453;p=thirdparty%2Fgcc.git freeze.adb (Freeze_Entity, [...]): Add a guard to make sure that the Etype of a component of the corresponding... 2014-07-29 Robert Dewar * freeze.adb (Freeze_Entity, Concurrent_Type case): Add a guard to make sure that the Etype of a component of the corresponding record type is present before trying to freeze it. * sem_ch5.adb: Minor reformatting. From-SVN: r213165 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 2ccfdf417ca4..917f4beb415c 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,10 @@ +2014-07-29 Robert Dewar + + * freeze.adb (Freeze_Entity, Concurrent_Type case): Add a guard + to make sure that the Etype of a component of the corresponding + record type is present before trying to freeze it. + * sem_ch5.adb: Minor reformatting. + 2014-07-29 Robert Dewar * exp_attr.adb, types.ads, types.h, exp_ch11.adb, a-except.adb, diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb index ddd162f9c5fa..9aee0a128a9b 100644 --- a/gcc/ada/freeze.adb +++ b/gcc/ada/freeze.adb @@ -4710,13 +4710,19 @@ package body Freeze is Freeze_And_Append (Comp, N, Result); elsif (Ekind (Comp)) /= E_Function then - if Is_Itype (Etype (Comp)) - and then Underlying_Type (Scope (Etype (Comp))) = E - then - Undelay_Type (Etype (Comp)); - end if; - Freeze_And_Append (Etype (Comp), N, Result); + -- The guard on the presence of the Etype seems to be needed + -- for some CodePeer (-gnatcC) cases, but not clear why??? + + if Present (Etype (Comp)) then + if Is_Itype (Etype (Comp)) + and then Underlying_Type (Scope (Etype (Comp))) = E + then + Undelay_Type (Etype (Comp)); + end if; + + Freeze_And_Append (Etype (Comp), N, Result); + end if; end if; Next_Entity (Comp); diff --git a/gcc/ada/sem_ch5.adb b/gcc/ada/sem_ch5.adb index 3ac6e6b42d90..c52f242d8f4c 100644 --- a/gcc/ada/sem_ch5.adb +++ b/gcc/ada/sem_ch5.adb @@ -3184,6 +3184,7 @@ package body Sem_Ch5 is -- We skip this step if we are not in code generation mode -- or CodePeer mode. + -- This is the one case where we remove dead code in the -- semantics as opposed to the expander, and we do not want -- to remove code if we are not in code generation mode,