This patch reverts a fix for a spurious warning for validity checks on
type Long_Float. This fix was dubious (as it was only affecting
Long_Float and not Float) and apparently is no longer needed.
Cleanup related to improved detection of uninitialised scalar objects.
Tested on x86_64-pc-linux-gnu, committed on trunk
gcc/ada/
* sem_attr.adb (Note_Possible_Modification): Revert a
special-case for validity checks on Long_Float type.
* snames.ads-tmpl (Name_Attr_Long_Float): Remove name added
exclusively for the mentioned fix.
diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb
--- a/gcc/ada/sem_attr.adb
+++ b/gcc/ada/sem_attr.adb
@@ -11145,43 +11145,10 @@ package body Sem_Attr is
=>
-- Note possible modification if we have a variable
- if Is_Variable (P) then
- declare
- PN : constant Node_Id := Parent (N);
- Nm : Node_Id;
-
- Note : Boolean := True;
- -- Skip this for the case of Unrestricted_Access occurring
- -- in the context of a Valid check, since this otherwise
- -- leads to a missed warning (the Valid check does not
- -- really modify!) If this case, Note will be reset to
- -- False.
-
- -- Skip it as well if the type is an Access_To_Constant,
- -- given that no use of the value can modify the prefix.
-
- begin
- if Attr_Id = Attribute_Unrestricted_Access
- and then Nkind (PN) = N_Function_Call
- then
- Nm := Name (PN);
-
- if Nkind (Nm) = N_Expanded_Name
- and then Chars (Nm) = Name_Valid
- and then Nkind (Prefix (Nm)) = N_Identifier
- and then Chars (Prefix (Nm)) = Name_Attr_Long_Float
- then
- Note := False;
- end if;
-
- elsif Is_Access_Constant (Typ) then
- Note := False;
- end if;
-
- if Note then
- Note_Possible_Modification (P, Sure => False);
- end if;
- end;
+ if Is_Variable (P)
+ and then not Is_Access_Constant (Typ)
+ then
+ Note_Possible_Modification (P, Sure => False);
end if;
-- Case where prefix is an entity name
diff --git a/gcc/ada/snames.ads-tmpl b/gcc/ada/snames.ads-tmpl
--- a/gcc/ada/snames.ads-tmpl
+++ b/gcc/ada/snames.ads-tmpl
@@ -776,7 +776,6 @@ package Snames is
Name_Allow : constant Name_Id := N + $;
Name_Amount : constant Name_Id := N + $;
Name_As_Is : constant Name_Id := N + $;
- Name_Attr_Long_Float : constant Name_Id := N + $;
Name_Assertion : constant Name_Id := N + $;
Name_Assertions : constant Name_Id := N + $;
Name_Attribute_Name : constant Name_Id := N + $;