[Ada] Do not clear Analyzed flag in expand if already set by preanalysis

gcc/ada/

	* expander.adb (Expand): Skip clearing of Analyzed flag if
	already set for N_Real_Literal.
This commit is contained in:
Marc Poulhiès 2021-09-20 16:33:30 +02:00 committed by Pierre-Marie de Rodat
parent 6b1c091238
commit 4dc82cc768

View File

@ -49,6 +49,7 @@ with Sem_Ch8; use Sem_Ch8;
with Sem_Util; use Sem_Util;
with Sinfo; use Sinfo;
with Sinfo.Nodes; use Sinfo.Nodes;
with Stand; use Stand;
with Table;
package body Expander is
@ -152,7 +153,19 @@ package body Expander is
-- not take place. This prevents cascaded errors due to stack mismatch.
elsif not Expander_Active then
Set_Analyzed (N, Full_Analysis);
-- Do not clear the Analyzed flag if it has been set on purpose
-- during preanalysis in Fold_Ureal. In that case, the Etype field
-- in N_Real_Literal will be set to something different than
-- Universal_Real.
if Full_Analysis
or else not (Nkind (N) = N_Real_Literal
and then Present (Etype (N))
and then Etype (N) /= Universal_Real)
then
Set_Analyzed (N, Full_Analysis);
end if;
if Serious_Errors_Detected > 0 and then Scope_Is_Transient then
Scope_Stack.Table