Commit 92ef5772 by Piotr Trojanek Committed by Pierre-Marie de Rodat

[Ada] Do not rewrite argument of pragma Entry_Queue_Length in analysis

It was unusual for the analysis phase of compiler to rewrite static
expression of pragma Entry_Queue_Length with its value. This typically
happens when expanding the AST and only if needed for a given backend.
In particular, GNATprove doesn't need such an expansion and actually
needs the unrewritten AST to detect references to constants declared
with SPARK_Mode => Off within a code with SPARK_Mode => On.

This change has no impact on compilation, so no frontend test is
provided.

2019-08-21  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* sem_prag.adb (Max_Entry_Queue_Length): Do not substitute
	expression of the pragma argument with its value during
	analysis.
	* sem_util.adb (Get_Max_Queue_Length): Compute value of the
	pragma argument when needed.

From-SVN: r274781
parent 5c34f30d
2019-08-21 Piotr Trojanek <trojanek@adacore.com>
* sem_prag.adb (Max_Entry_Queue_Length): Do not substitute
expression of the pragma argument with its value during
analysis.
* sem_util.adb (Get_Max_Queue_Length): Compute value of the
pragma argument when needed.
2019-08-21 Yannick Moy <moy@adacore.com>
* checks.adb (Install_Null_Excluding_Check): Do not install
......
......@@ -19599,15 +19599,6 @@ package body Sem_Prag is
end if;
-- Manually substitute the expression value of the pragma argument
-- if it's not an integer literal because this is not taken care
-- of automatically elsewhere.
if Nkind (Arg) /= N_Integer_Literal then
Rewrite (Arg, Make_Integer_Literal (Sloc (Arg), Val));
Set_Etype (Arg, Etype (Original_Node (Arg)));
end if;
Record_Rep_Item (Entry_Id, N);
end Max_Entry_Queue_Length;
......@@ -9763,7 +9763,8 @@ package body Sem_Util is
return Uint_0;
end if;
Max := Intval (Expression (First (Pragma_Argument_Associations (Prag))));
Max := Expr_Value
(Expression (First (Pragma_Argument_Associations (Prag))));
-- Since -1 and 0 are equivalent, return 0 for instances of -1 for
-- uniformity.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment