From: Ghjuvan Lacambre <[email protected]>

This call validation was introduced a couple of months ago and caused
GNAT2SCIL to fail a lot. It was determined that while being invalid for
GCC, the tree was valid for GNAT2SCIL. Since it was thought that only
the checking of the return type caused issue for CodePeer_Mode, this is
the only part that disabled. Recent changes revealed that there also
exists differences in the AST expected by GCC and GNAT2SCIL, and that
checking the actuals also causes issues for GNAT2SCIL. We hence entirely
disable the checking of calls in CodePeer_Mode instead of just the
checking of return values.

gcc/ada/ChangeLog:

        * exp_ch6.adb (Validate_Subprogram_Calls): Do not Check_Calls in 
CodePeer_Mode.
        (Check_Calls): Remove CodePeer_Mode special case.

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

---
 gcc/ada/exp_ch6.adb | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
index 2a32f3a90592..d48b8f22ba1a 100644
--- a/gcc/ada/exp_ch6.adb
+++ b/gcc/ada/exp_ch6.adb
@@ -10592,19 +10592,11 @@ package body Exp_Ch6 is
 
                begin
                   pragma Assert (Check_BIP_Actuals (Call_Node, Subp));
-
-                  --  Do not attempt to verify the return type in CodePeer_Mode
-                  --  as CodePeer_Mode is missing some expansion code that
-                  --  results in trees that would be considered malformed for
-                  --  GCC but aren't for GNAT2SCIL.
-
-                  if not CodePeer_Mode then
                     --  Build-in-place function calls return their result by
                     --  reference.
 
-                     pragma Assert (not Is_Build_In_Place_Function (Subp)
-                       or else Returns_By_Ref (Subp));
-                  end if;
+                  pragma Assert (not Is_Build_In_Place_Function (Subp)
+                    or else Returns_By_Ref (Subp));
                end;
 
             --  Skip generic bodies
@@ -10714,7 +10706,14 @@ package body Exp_Ch6 is
 
       pragma Assert (Serious_Errors_Detected = 0);
 
-      Check_Calls (N);
+      --  Do not attempt to verify the return type in CodePeer_Mode
+      --  as CodePeer_Mode is missing some expansion code that
+      --  results in trees that would be considered malformed for
+      --  GCC but aren't for GNAT2SCIL.
+
+      if not CodePeer_Mode then
+         Check_Calls (N);
+      end if;
    end Validate_Subprogram_Calls;
 
    --------------
-- 
2.43.0

Reply via email to