aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2007-04-21 17:47:13 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2007-04-21 17:47:13 +0000
commit84ece8efd21ed73d98de62e4bcf22b4160cd7faa (patch)
tree986170b134afaa330f5f7db7761ce3e7b9e0424a /gcc
parentfc52a1446b2ad0a460a8bd207776b5a3739f269f (diff)
downloadgcc-84ece8efd21ed73d98de62e4bcf22b4160cd7faa.zip
gcc-84ece8efd21ed73d98de62e4bcf22b4160cd7faa.tar.gz
gcc-84ece8efd21ed73d98de62e4bcf22b4160cd7faa.tar.bz2
re PR tree-optimization/31136 (FRE ignores bit-field truncation (C and C++ front-end don't produce bit-field truncation)
2007-04-21 Richard Guenther <rguenther@suse.de> PR middle-end/31136 * fold-const.c (fold_unary): Call fold_convert_const on the original tree. * gcc.c-torture/execute/pr31136.c: New testcase. From-SVN: r124020
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/fold-const.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr31136.c17
4 files changed, 29 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index cc3d7ab..034936d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2007-04-21 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/31136
+ * fold-const.c (fold_unary): Call fold_convert_const on the
+ original tree.
+
2007-04-21 Alexandre Oliva <aoliva@redhat.com>
* gcse.c (store_killed_in_insn): Handle PARALLELs.
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 6d2db7b..4e8f34f 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -7857,7 +7857,7 @@ fold_unary (enum tree_code code, tree type, tree op0)
return fold_build1 (BIT_NOT_EXPR, type, fold_convert (type, tem));
}
- tem = fold_convert_const (code, type, arg0);
+ tem = fold_convert_const (code, type, op0);
return tem ? tem : NULL_TREE;
case VIEW_CONVERT_EXPR:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 00af7d4..3157d85 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2007-04-21 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/31136
+ * gcc.c-torture/execute/pr31136.c: New testcase.
+
2007-04-21 Alexandre Oliva <aoliva@redhat.com>
* gcc.target/i386/movsi-sm-1.c: New.
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr31136.c b/gcc/testsuite/gcc.c-torture/execute/pr31136.c
new file mode 100644
index 0000000..66c202c
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr31136.c
@@ -0,0 +1,17 @@
+extern void abort (void);
+
+struct S {
+ unsigned b4:4;
+ unsigned b6:6;
+} s;
+
+int main()
+{
+ s.b6 = 31;
+ s.b4 = s.b6;
+ s.b6 = s.b4;
+ if (s.b6 != 15)
+ abort ();
+ return 0;
+}
+