aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2018-02-09 09:50:14 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2018-02-09 09:50:14 +0000
commit8ed6f54304aac6a08b6d14663cbe46e3c47ce25e (patch)
treedabeb0d8389d262450e1347b2bfefaf345be8de2 /gcc
parentcc17f338264be226e2349254cd8db9a35632d2bf (diff)
downloadgcc-8ed6f54304aac6a08b6d14663cbe46e3c47ce25e.zip
gcc-8ed6f54304aac6a08b6d14663cbe46e3c47ce25e.tar.gz
gcc-8ed6f54304aac6a08b6d14663cbe46e3c47ce25e.tar.bz2
* expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
From-SVN: r257519
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/expr.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gnat.dg/sso8.adb15
-rw-r--r--gcc/testsuite/gnat.dg/sso8_pkg.ads32
5 files changed, 56 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f255810..7ed08fa 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/expr.c b/gcc/expr.c
index 36a6c72..876883e 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -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. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8772c42..544ebef 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
diff --git a/gcc/testsuite/gnat.dg/sso8.adb b/gcc/testsuite/gnat.dg/sso8.adb
new file mode 100644
index 0000000..003077c
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/sso8.adb
@@ -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;
diff --git a/gcc/testsuite/gnat.dg/sso8_pkg.ads b/gcc/testsuite/gnat.dg/sso8_pkg.ads
new file mode 100644
index 0000000..e9227e6
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/sso8_pkg.ads
@@ -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;