[Ada] Set Etype on rewriteen Max_Queue_Length expressions
authorPiotr Trojanek <trojanek@adacore.com>
Thu, 31 May 2018 10:46:17 +0000 (10:46 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Thu, 31 May 2018 10:46:17 +0000 (10:46 +0000)
Rewriting of Max_Queue_Length expression into N_Integer_Literal should probably
be done in expansion and not in analysis, but anyway it should not strip the
expression from its Etype because backends (e.g. GNATprove) expect that Etype
to be present.

No frontend test is provided, because GNAT doesn't care about the missing
Etype decoration. This patch allows to simplify AST processing in GNATprove.

2018-05-31  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* sem_prag.adb (Analyze_Pragma): Set Etype on the rewritten
Max_Queue_Length expression.

From-SVN: r261002

gcc/ada/ChangeLog
gcc/ada/sem_prag.adb

index 45a4bfd031173bb5b290397f885b0a49eb1d7116..a58cfe85b95ea056b5b5da363ed476bde114a2d2 100644 (file)
@@ -1,3 +1,8 @@
+2018-05-31  Piotr Trojanek  <trojanek@adacore.com>
+
+       * sem_prag.adb (Analyze_Pragma): Set Etype on the rewritten
+       Max_Queue_Length expression.
+
 2018-05-31  Sergey Rybin  <rybin@adacore.com>
 
        * doc/gnat_ugn/gnat_and_program_execution.rst: gnatelim does not need
index b75b318d2ef67f445f43719cacfee0ab8e522657..e80c297cd09efe51468405ce4c19a9f3c8487877 100644 (file)
@@ -18833,6 +18833,7 @@ package body Sem_Prag is
 
             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);