re PR c/30313 (sizeof of expression including bit-field)
authorRichard Guenther <rguenther@suse.de>
Tue, 30 Jan 2007 10:17:09 +0000 (10:17 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 30 Jan 2007 10:17:09 +0000 (10:17 +0000)
2007-01-30  Richard Guenther  <rguenther@suse.de>

PR middle-end/30313
* passes.c (execute_one_pass): Reset in_gimple_form to not
confuse non-unit-at-a-time mode.

* gcc.dg/torture/pr30313.c: New testcase.

From-SVN: r121334

gcc/ChangeLog
gcc/passes.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/pr30313.c [new file with mode: 0644]

index ddd35cd3be7745857938c2e0efc1f65c66f5109a..3c9d149c0a3a010172ccd0fe27d2d3a1a98fd107 100644 (file)
@@ -1,3 +1,9 @@
+2007-01-30  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/30313
+       * passes.c (execute_one_pass): Reset in_gimple_form to not
+       confuse non-unit-at-a-time mode.
+
 2007-01-29  Roger Sayle  <roger@eyesopen.com>
            Richard Guenther  <rguenther@suse.de>
 
index f1a702efaaa8fb641be6c47bb57c4dd4db26d567..a9bbba619c78bedf9ad5125c2c32439dbbe2abe9 100644 (file)
@@ -1054,6 +1054,9 @@ execute_one_pass (struct tree_opt_pass *pass)
       dump_file = NULL;
     }
 
+  /* Reset in_gimple_form to not break non-unit-at-a-time mode.  */
+  in_gimple_form = false;
+
   return true;
 }
 
index 205b74dc1428dbdb6ae7dee6cdf797be298efd7a..a8ad0c5d622d9618844e904c73d06024c53724ad 100644 (file)
@@ -1,3 +1,8 @@
+2007-01-30  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/30313
+       * gcc.dg/torture/pr30313.c: New testcase.
+
 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
 
        * gcc.dg/dfp/dfp-except.h: New file.
diff --git a/gcc/testsuite/gcc.dg/torture/pr30313.c b/gcc/testsuite/gcc.dg/torture/pr30313.c
new file mode 100644 (file)
index 0000000..1df85f7
--- /dev/null
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+
+static inline void bar(){}
+
+struct S
+{
+  signed int i: 32;
+};
+
+int main()
+{
+  struct S x = {32};
+  sizeof(x.i+0);
+  return 0;
+}