[Ada] Add No_Truncation flag on view conversion for GNAT-LLVM
authorEric Botcazou <ebotcazou@adacore.com>
Thu, 30 Jan 2020 20:48:27 +0000 (21:48 +0100)
committerPierre-Marie de Rodat <derodat@adacore.com>
Fri, 5 Jun 2020 12:17:35 +0000 (08:17 -0400)
2020-06-05  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* exp_attr.adb (Expand_N_Attribute_Reference) <Valid_Scalars>:
Set the No_Truncation flag on the unchecked conversion built for
scalar types.

gcc/ada/exp_attr.adb

index 9d6979612485095843326e2945fa15a156e15d24..1c9b971e9273e9b4251fda26979e34e933d21765 100644 (file)
@@ -7185,6 +7185,12 @@ package body Exp_Attr is
                   Unchecked_Convert_To (Val_Typ, New_Copy_Tree (Pref)),
                 Attribute_Name => Name_Valid);
 
+            --  Required by LLVM although the sizes are the same???
+
+            if Nkind (Prefix (Expr)) = N_Unchecked_Type_Conversion then
+               Set_No_Truncation (Prefix (Expr));
+            end if;
+
          --  Validate the scalar components of an array by iterating over all
          --  dimensions of the array while checking individual components.