Commit afdc7598 by Bob Duff Committed by Pierre-Marie de Rodat

[Ada] Object_Size clause specifying 0 bits is illegal

The patch gives an error message on "for T'Object_Size use 0;".

2019-08-20  Bob Duff  <duff@adacore.com>

gcc/ada/

	* sem_ch13.adb (Object_Size): Give an error for zero. It really
	rubs me the wrong way that we don't honor "for T'Object_Size use
	0;", but it's not important enough to fix. In any case, if we're
	not going to obey the clause, we should give an error.

gcc/testsuite/

	* gnat.dg/object_size1.adb: New testcase.

From-SVN: r274722
parent 6cd8f5b0
2019-08-20 Bob Duff <duff@adacore.com>
* sem_ch13.adb (Object_Size): Give an error for zero. It really
rubs me the wrong way that we don't honor "for T'Object_Size use
0;", but it's not important enough to fix. In any case, if we're
not going to obey the clause, we should give an error.
2019-08-20 Bob Duff <duff@adacore.com>
* errout.adb (Error_Msg_Internal): Set Warn_Err in case of
Is_Style_Msg.
* erroutc.adb (Output_Msg_Text): Do Warnings_Treated_As_Errors
......
......@@ -5812,6 +5812,9 @@ package body Sem_Ch13 is
if ASIS_Mode then
null;
elsif Size <= 0 then
Error_Msg_N ("Object_Size must be positive", Expr);
elsif Is_Scalar_Type (U_Ent) then
if Size /= 8 and then Size /= 16 and then Size /= 32
and then UI_Mod (Size, 64) /= 0
......
2019-08-20 Bob Duff <duff@adacore.com>
* gnat.dg/object_size1.adb: New testcase.
2019-08-20 Eric Botcazou <ebotcazou@adacore.com>
* gcc.c-torture/execute/20190820-1.c: New test.
......
-- { dg-do compile }
with Text_IO; use Text_IO;
procedure Object_Size1 is
type Zero_Size_Type is (Solo);
for Zero_Size_Type'Size use 0;
for Zero_Size_Type'Object_Size use 0; -- { dg-error "Object_Size must be positive" }
begin
Put_Line (Zero_Size_Type'Size'Image);
Put_Line (Zero_Size_Type'Object_Size'Image);
end Object_Size1;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment