+2016-05-02 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * sem_ch13.adb (Alignment_Error): Removed.
+ (Get_Alignment_Value): Code cleanup.
+
2016-05-02 Tristan Gingold <gingold@adacore.com>
* sem_ch3.adb (Analyze_Object_Declaration): Use Has_Protected
-------------------------
function Get_Alignment_Value (Expr : Node_Id) return Uint is
- procedure Alignment_Error;
- -- Issue an error concerning a negatize or zero alignment represented by
- -- expression Expr.
+ Align : constant Uint := Static_Integer (Expr);
- ---------------------
- -- Alignment_Error --
- ---------------------
+ begin
+ if Align = No_Uint then
+ return No_Uint;
+
+ elsif Align <= 0 then
- procedure Alignment_Error is
- begin
-- This error is suppressed in ASIS mode to allow for different ASIS
-- back-ends or ASIS-based tools to query the illegal clause.
if not ASIS_Mode then
Error_Msg_N ("alignment value must be positive", Expr);
end if;
- end Alignment_Error;
- -- Local variables
-
- Align : constant Uint := Static_Integer (Expr);
-
- -- Start of processing for Get_Alignment_Value
-
- begin
- if Align = No_Uint then
- return No_Uint;
-
- elsif Align <= 0 then
- Alignment_Error;
return No_Uint;
else
exit when M = Align;
if M > Align then
- Alignment_Error;
+
+ -- This error is suppressed in ASIS mode to allow for
+ -- different ASIS back-ends or ASIS-based tools to query the
+ -- illegal clause.
+
+ if not ASIS_Mode then
+ Error_Msg_N ("alignment value must be power of 2", Expr);
+ end if;
+
return No_Uint;
end if;
end;