aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/fold-const.c6
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gnat.dg/bit_packed_array2.adb19
4 files changed, 31 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a008d0d..4d954bf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2008-03-30 Eric Botcazou <ebotcazou@adacore.com>
+
+ * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
+
2008-03-30 Richard Guenther <rguenther@suse.de>
PR middle-end/31023
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index c420b79..6e5d940 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -10425,8 +10425,10 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1)
{
return fold_build1 (BIT_NOT_EXPR, type,
build2 (BIT_AND_EXPR, type,
- TREE_OPERAND (arg0, 0),
- TREE_OPERAND (arg1, 0)));
+ fold_convert (type,
+ TREE_OPERAND (arg0, 0)),
+ fold_convert (type,
+ TREE_OPERAND (arg1, 0))));
}
/* See if this can be simplified into a rotate first. If that
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5b61aee5..3124811 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2008-03-30 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/bit_packed_array2.adb: New test.
+
2008-03-30 Paul Thomas <pault@gcc.gnu.org>
PR fortran/35740
diff --git a/gcc/testsuite/gnat.dg/bit_packed_array2.adb b/gcc/testsuite/gnat.dg/bit_packed_array2.adb
new file mode 100644
index 0000000..b403122
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/bit_packed_array2.adb
@@ -0,0 +1,19 @@
+-- { dg-do compile }
+-- { dg-options "-gnatws" }
+
+procedure Bit_Packed_Array2 is
+
+ type Bit_Array is array (integer range <>) of Boolean;
+ pragma Pack(Bit_Array);
+
+ b1 : Bit_Array(1..64);
+ b2 : Bit_array(1..64);
+ res : Bit_array(1..64);
+
+begin
+
+ if (not((not b1) or (not b2))) /= res then
+ null;
+ end if;
+
+end;