Commit 469dfae9 by Eric Botcazou Committed by Eric Botcazou

tree-sra.c (sra_type_can_be_decomposed_p): Make sure that the bitfield is of…

tree-sra.c (sra_type_can_be_decomposed_p): Make sure that the bitfield is of integral type before testing its precision.

	* tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
	that the bitfield is of integral type before testing its precision.

From-SVN: r136009
parent 3b3c0430
2008-05-27 Eric Botcazou <ebotcazou@adacore.com>
* tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
that the bitfield is of integral type before testing its precision.
2008-05-27 Trevor Smigiel <trevor_smigiel@playstation.sony.com>
Sa Liu <saliu@de.ibm.com>
......
2008-05-27 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/pack9.ad[sb]: New test.
2008-05-27 Arnaud Charlet <charlet@adacore.com>
* gnat.dg/sync1.ad[sb]: New test.
......
-- { dg-do compile }
-- { dg-options "-O2 -gnatp -cargs --param sra-max-structure-size=24 --param sra-max-structure-count=6 -fdump-tree-final_cleanup" }
package body Pack9 is
procedure Copy (X, Y : R2_Ptr) is
T : R2 := Y.all;
begin
if T.I2 /= Y.I2 then
raise Program_Error;
end if;
X.all := T;
end;
end Pack9;
-- { dg-final { scan-tree-dump-not "__gnat_rcheck" "final_cleanup" } }
-- { dg-final { cleanup-tree-dump "final_cleanup" } }
package Pack9 is
type R1 is record
I : Integer;
C : Character;
end record;
type R2 is record
I1, I2 : Integer;
A : R1;
end record;
pragma Pack(R2);
type R2_Ptr is access all R2;
procedure Copy (X, Y : R2_Ptr);
end Pack9;
......@@ -268,6 +268,7 @@ sra_type_can_be_decomposed_p (tree type)
{
/* Reject incorrectly represented bit fields. */
if (DECL_BIT_FIELD (t)
&& INTEGRAL_TYPE_P (TREE_TYPE (t))
&& (tree_low_cst (DECL_SIZE (t), 1)
!= TYPE_PRECISION (TREE_TYPE (t))))
goto fail;
......
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