Unfolding of static expressions is needed when evaluating static bounds, even in
the presence of strict analysis. Otherwise, we may wrongly identify static
predicates as dynamic ones, and thus require unnecessary "others" default case.
gcc/ada/ChangeLog:
* sem_attr.adb (Eval_Attribute): Remove strict analysis condition.
if Nkind (N) /= N_Attribute_Reference then
return;
-
- -- No evaluation required under strict preanalysis because locating
- -- static expressions is not needed; this also minimizes making tree
- -- modifications during strict preanalysis.
-
- elsif In_Strict_Preanalysis then
- return;
end if;
Aname := Attribute_Name (N);