Commit 5e5dc75a by Robert Dewar Committed by Arnaud Charlet

2008-08-20 Robert Dewar <dewar@adacore.com>

	* sem_ch13.adb:
	(Adjust_Record_For_Reverse_Bit_Order): Do not access First_Bit for
	non-existing component clause.

From-SVN: r139323
parent db58b502
2008-08-20 Robert Dewar <dewar@adacore.com>
* sem_ch13.adb:
(Adjust_Record_For_Reverse_Bit_Order): Do not access First_Bit for
non-existing component clause.
* exp_ch5.adb: Minor reformatting
* g-comlin.adb: Minor reformatting
* make.adb: Minor reformatting
* prj-proc.adb: Minor reformatting
* stylesw.ads: Minor reformatting
2008-08-20 Vincent Celier <celier@adacore.com>
* make.adb (Gnatmake_Switch_Found): New Boolean global variable
......@@ -222,66 +222,69 @@ package body Sem_Ch13 is
Comp := First_Component_Or_Discriminant (R);
while Present (Comp) loop
declare
CC : constant Node_Id := Component_Clause (Comp);
Fbit : constant Uint := Static_Integer (First_Bit (CC));
CC : constant Node_Id := Component_Clause (Comp);
begin
if Present (CC) then
declare
Fbit : constant Uint := Static_Integer (First_Bit (CC));
-- Case of component with size > max machine scalar
if Esize (Comp) > Max_Machine_Scalar_Size then
begin
-- Case of component with size > max machine scalar
-- Must begin on byte boundary
if Esize (Comp) > Max_Machine_Scalar_Size then
if Fbit mod SSU /= 0 then
Error_Msg_N
("illegal first bit value for reverse bit order",
First_Bit (CC));
Error_Msg_Uint_1 := SSU;
Error_Msg_Uint_2 := Max_Machine_Scalar_Size;
-- Must begin on byte boundary
Error_Msg_N
("\must be a multiple of ^ if size greater than ^",
First_Bit (CC));
if Fbit mod SSU /= 0 then
Error_Msg_N
("illegal first bit value for reverse bit order",
First_Bit (CC));
Error_Msg_Uint_1 := SSU;
Error_Msg_Uint_2 := Max_Machine_Scalar_Size;
-- Must end on byte boundary
Error_Msg_N
("\must be a multiple of ^ if size greater than ^",
First_Bit (CC));
elsif Esize (Comp) mod SSU /= 0 then
Error_Msg_N
("illegal last bit value for reverse bit order",
Last_Bit (CC));
Error_Msg_Uint_1 := SSU;
Error_Msg_Uint_2 := Max_Machine_Scalar_Size;
-- Must end on byte boundary
Error_Msg_N
("\must be a multiple of ^ if size greater than ^",
Last_Bit (CC));
elsif Esize (Comp) mod SSU /= 0 then
Error_Msg_N
("illegal last bit value for reverse bit order",
Last_Bit (CC));
Error_Msg_Uint_1 := SSU;
Error_Msg_Uint_2 := Max_Machine_Scalar_Size;
-- OK, give warning if enabled
Error_Msg_N
("\must be a multiple of ^ if size greater than ^",
Last_Bit (CC));
elsif Warn_On_Reverse_Bit_Order then
Error_Msg_N
("multi-byte field specified with non-standard"
& " Bit_Order?", CC);
-- OK, give warning if enabled
if Bytes_Big_Endian then
Error_Msg_N
("\bytes are not reversed "
& "(component is big-endian)?", CC);
else
elsif Warn_On_Reverse_Bit_Order then
Error_Msg_N
("\bytes are not reversed "
& "(component is little-endian)?", CC);
("multi-byte field specified with non-standard"
& " Bit_Order?", CC);
if Bytes_Big_Endian then
Error_Msg_N
("\bytes are not reversed "
& "(component is big-endian)?", CC);
else
Error_Msg_N
("\bytes are not reversed "
& "(component is little-endian)?", CC);
end if;
end if;
end if;
-- Case where size is not greater than max machine scalar.
-- For now, we just count these.
-- Case where size is not greater than max machine
-- scalar. For now, we just count these.
else
Num_CC := Num_CC + 1;
end if;
else
Num_CC := Num_CC + 1;
end if;
end;
end if;
end;
......
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