* expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.

From-SVN: r257519
This commit is contained in:
Eric Botcazou 2018-02-09 09:50:14 +00:00 committed by Eric Botcazou
parent cc17f33826
commit 8ed6f54304
5 changed files with 56 additions and 2 deletions

View File

@ -1,3 +1,7 @@
2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
* expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
2018-02-09 Jakub Jelinek <jakub@redhat.com>
PR sanitizer/84285

View File

@ -4726,8 +4726,6 @@ optimize_bitfield_assignment_op (poly_uint64 pbitsize,
}
else if (!REG_P (str_rtx) && GET_CODE (str_rtx) != SUBREG)
return false;
else
gcc_assert (!reverse);
/* If the bit field covers the whole REG/MEM, store_field
will likely generate better code. */

View File

@ -1,3 +1,8 @@
2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/sso8.adb: New test.
* gnat.dg/sso8_pkg.ads: New helper.
2018-02-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/84278

View File

@ -0,0 +1,15 @@
-- { dg-do run }
-- { dg-options "-O" }
with Interfaces; use Interfaces;
with SSO8_Pkg; use SSO8_Pkg;
procedure SSO8 is
Data : Rec;
begin
Data.Array_Data (2) := True;
Val8 := Conv (Data);
if Val8 /= 32 then
raise Program_Error;
end if;
end;

View File

@ -0,0 +1,32 @@
with Interfaces;
with System;
with Unchecked_Conversion;
package SSO8_Pkg is
Val8 : Interfaces.Unsigned_8;
type Two_Bit_Int is range 0 .. 3;
for Two_Bit_Int'size use 2;
type Arr is array (1 .. 5) of Boolean;
for Arr'scalar_storage_order use System.High_Order_First;
pragma Pack (Arr);
type Rec is record
Boolean_Data : Boolean;
Array_Data : Arr;
Two_Bit_Data : Two_Bit_Int;
end record;
for Rec use record
Boolean_Data at 0 range 0 .. 0;
Array_Data at 0 range 1 .. 5;
Two_Bit_Data at 0 range 6 .. 7;
end record;
for Rec'size use 8;
for Rec'bit_order use System.High_Order_First;
for Rec'scalar_storage_order use System.High_Order_First;
function Conv is new Unchecked_Conversion (Rec, Interfaces.Unsigned_8);
end SSO8_Pkg;