diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/fold-const.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/bit_packed_array2.adb | 19 |
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; |