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> 2008-08-20 Vincent Celier <celier@adacore.com>
* make.adb (Gnatmake_Switch_Found): New Boolean global variable * make.adb (Gnatmake_Switch_Found): New Boolean global variable
...@@ -222,66 +222,69 @@ package body Sem_Ch13 is ...@@ -222,66 +222,69 @@ package body Sem_Ch13 is
Comp := First_Component_Or_Discriminant (R); Comp := First_Component_Or_Discriminant (R);
while Present (Comp) loop while Present (Comp) loop
declare declare
CC : constant Node_Id := Component_Clause (Comp); CC : constant Node_Id := Component_Clause (Comp);
Fbit : constant Uint := Static_Integer (First_Bit (CC));
begin begin
if Present (CC) then if Present (CC) then
declare
Fbit : constant Uint := Static_Integer (First_Bit (CC));
-- Case of component with size > max machine scalar begin
-- Case of component with size > max machine scalar
if Esize (Comp) > Max_Machine_Scalar_Size then
-- Must begin on byte boundary if Esize (Comp) > Max_Machine_Scalar_Size then
if Fbit mod SSU /= 0 then -- Must begin on byte boundary
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;
Error_Msg_N if Fbit mod SSU /= 0 then
("\must be a multiple of ^ if size greater than ^", Error_Msg_N
First_Bit (CC)); ("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 -- Must end on byte boundary
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;
Error_Msg_N elsif Esize (Comp) mod SSU /= 0 then
("\must be a multiple of ^ if size greater than ^", Error_Msg_N
Last_Bit (CC)); ("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 -- OK, give warning if enabled
Error_Msg_N
("multi-byte field specified with non-standard"
& " Bit_Order?", CC);
if Bytes_Big_Endian then elsif Warn_On_Reverse_Bit_Order then
Error_Msg_N
("\bytes are not reversed "
& "(component is big-endian)?", CC);
else
Error_Msg_N Error_Msg_N
("\bytes are not reversed " ("multi-byte field specified with non-standard"
& "(component is little-endian)?", CC); & " 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;
end if;
-- Case where size is not greater than max machine scalar. -- Case where size is not greater than max machine
-- For now, we just count these. -- scalar. For now, we just count these.
else else
Num_CC := Num_CC + 1; Num_CC := Num_CC + 1;
end if; end if;
end;
end if; end if;
end; 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