From: Eric Botcazou <ebotca...@adacore.com>

It is very confusing for the user because it does not make any reference
to the source code but only to details of the underlying implementation.

gcc/ada/ChangeLog:
        * gcc-interface/trans.cc (Raise_Error_to_gnu) <CE_Invalid_Data>:
        Do not the generate range information if the value is a call to a
        Rep_To_Pos function.

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

---
 gcc/ada/gcc-interface/trans.cc | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/gcc/ada/gcc-interface/trans.cc b/gcc/ada/gcc-interface/trans.cc
index ebcf2cdf8fe..a073b2d94f1 100644
--- a/gcc/ada/gcc-interface/trans.cc
+++ b/gcc/ada/gcc-interface/trans.cc
@@ -6124,7 +6124,12 @@ Raise_Error_to_gnu (Node_Id gnat_node, tree 
*gnu_result_type_p)
              gnu_index = convert (gnu_type, gnu_index);
            }
 
+         /* Do not print the range information for an enumeration type with
+            holes since it is meaningless.  */
          if (with_extra_info
+             && !(Nkind (gnat_index) == N_Function_Call
+                  && Is_Entity_Name (Name (gnat_index))
+                  && Is_Rep_To_Pos (Entity (Name (gnat_index))))
              && Known_Esize (gnat_type)
              && UI_To_Int (Esize (gnat_type)) <= 32)
            gnu_result
-- 
2.43.0

Reply via email to