https://gcc.gnu.org/g:c9328cb4b106a6b9afe3359e0287ece496b8e277
commit r15-4890-gc9328cb4b106a6b9afe3359e0287ece496b8e277
Author: Piotr Trojanek <troja...@adacore.com>
Date:   Thu Sep 26 08:40:28 2024 +0200

    ada: Fix asymmetry in resolution of unary intrinsic operators
    
    Resolution of binary and unary intrinsic operators differed when
    expansion was inactive. In particular, this affected GNATprove
    handling of Ada.Real_Time."abs" operator. This patch makes unary
    resolution behave like binary resolution.
    
    gcc/ada/ChangeLog:
    
            * sem_res.adb (Resolve_Intrinsic_Unary_Operator): Disable when
            expansion is inactive.

Diff:
---
 gcc/ada/sem_res.adb | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb
index 6a2680b6b1da..0abdeee8fbee 100644
--- a/gcc/ada/sem_res.adb
+++ b/gcc/ada/sem_res.adb
@@ -9972,6 +9972,13 @@ package body Sem_Res is
       Arg2 : Node_Id;
 
    begin
+      --  We must preserve the original entity in a generic setting, so that
+      --  the legality of the operation can be verified in an instance.
+
+      if not Expander_Active then
+         return;
+      end if;
+
       Op := Entity (N);
       while Scope (Op) /= Standard_Standard loop
          Op := Homonym (Op);

Reply via email to