[COMMITTED,04/30] ada: Detect only conflict with synomyms of max queue length

Message ID 20240520074858.222435-4-poulhies@adacore.com
State Committed
Commit d6a10f8173ca9f390cd87691477fa147d4404f3b
Series [COMMITTED,01/30] ada: Rework and augment documentation on strict aliasing |

Commit Message

Marc Poulhiès May 20, 2024, 7:48 a.m. UTC
  From: Jose Ruiz <ruiz@adacore.com>

Use of duplicated representation aspect is detected elsewhere
so we do not try to detect them here to avoid repetition of


	* sem_prag.adb (Analyze_Pragma): Exclude detection of duplicates
	because they are detected elsewhere.

Tested on x86_64-pc-linux-gnu, committed on master.

 gcc/ada/sem_prag.adb | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)


diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index 0e2ce9de4b5..a895fd2053a 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -20388,15 +20388,23 @@  package body Sem_Prag is
                  ("pragma % must apply to a protected entry declaration");
             end if;
-            --  Check for duplicates
+            --  Check for conflicting use of synonyms. Note that we exclude
+            --  the detection of duplicates here because they are detected
+            --  elsewhere.
-            if Has_Rep_Pragma (Entry_Id, Name_Max_Entry_Queue_Length)
+            if (Has_Rep_Pragma (Entry_Id, Name_Max_Entry_Queue_Length)
+                  and then
+                Prag_Id /= Pragma_Max_Entry_Queue_Length)
                  or else
-               Has_Rep_Pragma (Entry_Id, Name_Max_Entry_Queue_Depth)
+               (Has_Rep_Pragma (Entry_Id, Name_Max_Entry_Queue_Depth)
+                  and then
+                Prag_Id /= Pragma_Max_Entry_Queue_Depth)
                  or else
-               Has_Rep_Pragma (Entry_Id, Name_Max_Queue_Length)
+               (Has_Rep_Pragma (Entry_Id, Name_Max_Queue_Length)
+                  and then
+                Prag_Id /= Pragma_Max_Queue_Length)
-               Error_Msg_N ("??duplicate Max_Entry_Queue_Length pragma", N);
+               Error_Msg_N ("??maximum entry queue length already set", N);
             end if;
             --  Mark the pragma as Ghost if the related subprogram is also