mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-24 12:51:15 +08:00
re PR tree-optimization/46351 (incorrect scalarization (2))
2010-11-10 Martin Jambor <mjambor@suse.cz> PR tree-optimization/46351 PR tree-optimization/46377 * tree-sra.c (type_internals_preclude_sra_p): Disqualify types with aggregate bit-fields. * testsuite/gnat.dg/opt10.adb: New file. * testsuite/gnat.dg/opt10_pkg.ads: Likewise. * testsuite/gnat.dg/opt11.adb: Likewise. * testsuite/gnat.dg/opt11.ads: Likewise. From-SVN: r166535
This commit is contained in:
parent
2be55a2540
commit
f5a7af7d17
gcc
@ -1,3 +1,10 @@
|
||||
2010-11-10 Martin Jambor <mjambor@suse.cz>
|
||||
|
||||
PR tree-optimization/46351
|
||||
PR tree-optimization/46377
|
||||
* tree-sra.c (type_internals_preclude_sra_p): Disqualify types with
|
||||
aggregate bit-fields.
|
||||
|
||||
2010-11-10 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* doc/tm.texi.in (TARGET_OPTION_TRANSLATE_TABLE): Remove.
|
||||
|
@ -1,3 +1,12 @@
|
||||
2010-11-10 Martin Jambor <mjambor@suse.cz>
|
||||
|
||||
PR tree-optimization/46351
|
||||
PR tree-optimization/46377
|
||||
* gnat.dg/opt10.adb: New file.
|
||||
* gnat.dg/opt10_pkg.ads: Likewise.
|
||||
* gnat.dg/opt11.adb: Likewise.
|
||||
* gnat.dg/opt11.ads: Likewise.
|
||||
|
||||
2010-11-10 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gnat.dg/boolean_conv.adb: New test.
|
||||
|
26
gcc/testsuite/gnat.dg/opt10.adb
Normal file
26
gcc/testsuite/gnat.dg/opt10.adb
Normal file
@ -0,0 +1,26 @@
|
||||
-- { dg-do compile }
|
||||
-- { dg-options "-O2 }
|
||||
|
||||
with Opt10_Pkg; use Opt10_Pkg;
|
||||
|
||||
procedure Opt10 is
|
||||
|
||||
procedure Compare_Rep_Data (MA, MB : Rep_Message) is
|
||||
begin
|
||||
if MA.Data /= MB.Data then
|
||||
raise Program_Error;
|
||||
end if;
|
||||
end;
|
||||
|
||||
procedure Check_Rep_For (Bit : Boolean) is
|
||||
MA, MB : Rep_Message;
|
||||
begin
|
||||
Safe_Assign (MA, Bit);
|
||||
Safe_Assign (MB, Bit);
|
||||
Compare_Rep_Data (MA, MB);
|
||||
end;
|
||||
|
||||
begin
|
||||
Check_Rep_For (Bit => False);
|
||||
end;
|
||||
|
14
gcc/testsuite/gnat.dg/opt10_pkg.ads
Normal file
14
gcc/testsuite/gnat.dg/opt10_pkg.ads
Normal file
@ -0,0 +1,14 @@
|
||||
package Opt10_Pkg is
|
||||
|
||||
type Rep_Message is record
|
||||
Bit : Boolean;
|
||||
Data : String (1 .. 4);
|
||||
end record;
|
||||
for Rep_Message use record
|
||||
Bit at 0 range 0 .. 0;
|
||||
Data at 0 range 1 .. 32;
|
||||
end record;
|
||||
|
||||
procedure Safe_Assign (M : in out Rep_Message; Bit : Boolean);
|
||||
|
||||
end;
|
12
gcc/testsuite/gnat.dg/opt11.adb
Normal file
12
gcc/testsuite/gnat.dg/opt11.adb
Normal file
@ -0,0 +1,12 @@
|
||||
-- { dg-compile }
|
||||
-- { dg-options "-O" }
|
||||
|
||||
package body Opt11 is
|
||||
|
||||
procedure Proc is
|
||||
R : Rec;
|
||||
begin
|
||||
R := (others => <>);
|
||||
end;
|
||||
|
||||
end Opt11;
|
17
gcc/testsuite/gnat.dg/opt11.ads
Normal file
17
gcc/testsuite/gnat.dg/opt11.ads
Normal file
@ -0,0 +1,17 @@
|
||||
package Opt11 is
|
||||
|
||||
type String_Ptr is access constant String;
|
||||
|
||||
type Form_Type is (Qualified, Unqualified);
|
||||
|
||||
type Rec is record
|
||||
N1, N2, N3 : Natural;
|
||||
Fixed : String_Ptr;
|
||||
Form : Form_Type;
|
||||
Is_Local : Boolean := True;
|
||||
end record;
|
||||
pragma Pack (Rec);
|
||||
|
||||
procedure Proc;
|
||||
|
||||
end Opt11;
|
@ -653,7 +653,8 @@ type_internals_preclude_sra_p (tree type)
|
||||
if (TREE_THIS_VOLATILE (fld)
|
||||
|| !DECL_FIELD_OFFSET (fld) || !DECL_SIZE (fld)
|
||||
|| !host_integerp (DECL_FIELD_OFFSET (fld), 1)
|
||||
|| !host_integerp (DECL_SIZE (fld), 1))
|
||||
|| !host_integerp (DECL_SIZE (fld), 1)
|
||||
|| (DECL_BIT_FIELD (fld) && AGGREGATE_TYPE_P (ft)))
|
||||
return true;
|
||||
|
||||
if (AGGREGATE_TYPE_P (ft)
|
||||
|
Loading…
x
Reference in New Issue
Block a user