If a Subprogram_Variant aspect is given in ghost code, and the assertion
policy is set to Ghost => Ignore, and the -gnata switch is used, the
compiler gives spurious error messages.

Tested on x86_64-pc-linux-gnu, committed on trunk

gcc/ada/

        * exp_ch6.adb (Expand_Call_Helper): Do not call
        Check_Subprogram_Variant if the subprogram is an ignored ghost
        entity. Otherwise the compiler crashes (in debug builds) or
        gives strange error messages (in production builds).
diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
--- a/gcc/ada/exp_ch6.adb
+++ b/gcc/ada/exp_ch6.adb
@@ -4392,6 +4392,7 @@ package body Exp_Ch6 is
       --  the current subprogram is called.
 
       if Is_Subprogram (Subp)
+        and then not Is_Ignored_Ghost_Entity (Subp)
         and then Same_Or_Aliased_Subprograms (Subp, Current_Scope)
       then
          Check_Subprogram_Variant;


Reply via email to