[Ada] Crash processing Valid_Scalars whose evaluation is always true
The compiler blows up generating code associated with occurrences of attribute Valid_Scalars whose evaluation is always true. After this patch the following test compiles fine. 2018-05-23 Javier Miranda <miranda@adacore.com> gcc/ada/ * sem_attr.adb (Valid_Scalars): Do not invoke Error_Attr_P to report the warning on occurrences of this attribute whose evaluation is always true (since that subprogram aborts processing the attribute). In addition, replace the node by its boolean result 'True' (required because the backend has no knowledge of this attribute). gcc/testsuite/ * gnat.dg/valid_scalars1.adb: New testcase. From-SVN: r260591
This commit is contained in:
parent
aeaa0347e9
commit
026733d84e
@ -1,3 +1,11 @@
|
||||
2018-05-23 Javier Miranda <miranda@adacore.com>
|
||||
|
||||
* sem_attr.adb (Valid_Scalars): Do not invoke Error_Attr_P to report
|
||||
the warning on occurrences of this attribute whose evaluation is always
|
||||
true (since that subprogram aborts processing the attribute). In
|
||||
addition, replace the node by its boolean result 'True' (required
|
||||
because the backend has no knowledge of this attribute).
|
||||
|
||||
2018-05-23 Bob Duff <duff@adacore.com>
|
||||
|
||||
* libgnat/a-convec.adb: (Insert, Insert_Space): Suppress warnings. The
|
||||
|
@ -6929,8 +6929,10 @@ package body Sem_Attr is
|
||||
|
||||
else
|
||||
if not Scalar_Part_Present (P_Type) then
|
||||
Error_Attr_P
|
||||
("??attribute % always True, no scalars to check");
|
||||
Error_Msg_Name_1 := Aname;
|
||||
Error_Msg_F
|
||||
("??attribute % always True, no scalars to check", P);
|
||||
Set_Boolean_Result (N, True);
|
||||
end if;
|
||||
|
||||
-- Attribute 'Valid_Scalars is illegal on unchecked union types
|
||||
|
@ -1,3 +1,7 @@
|
||||
2018-05-23 Javier Miranda <miranda@adacore.com>
|
||||
|
||||
* gnat.dg/valid_scalars1.adb: New testcase.
|
||||
|
||||
2018-05-23 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* gnat.dg/iter1.adb, gnat.dg/iter1.ads: New testcase.
|
||||
|
11
gcc/testsuite/gnat.dg/valid_scalars1.adb
Normal file
11
gcc/testsuite/gnat.dg/valid_scalars1.adb
Normal file
@ -0,0 +1,11 @@
|
||||
-- { dg-do compile }
|
||||
-- { dg-options "-gnata -gnatws" }
|
||||
|
||||
procedure Valid_Scalars1 is
|
||||
type Ptr is access Integer;
|
||||
V1 : Ptr;
|
||||
|
||||
Check : Boolean := V1'Valid_Scalars;
|
||||
begin
|
||||
pragma Assert (Check);
|
||||
end;
|
Loading…
x
Reference in New Issue
Block a user