]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR tree-optimization/55355 (internal compiler error: in tree_low_cst, at tree...
authorMartin Jambor <mjambor@suse.cz>
Fri, 21 Dec 2012 22:28:40 +0000 (23:28 +0100)
committerMartin Jambor <jamborm@gcc.gnu.org>
Fri, 21 Dec 2012 22:28:40 +0000 (23:28 +0100)
2012-12-21  Martin Jambor  <mjambor@suse.cz>

PR tree-optimization/55355
* tree-sra.c (type_internals_preclude_sra_p): Also check that
bit_position is small enough to fit a single HOST_WIDE_INT.

* testsuite/g++.dg/torture/pr55355.C: New test.

From-SVN: r194686

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/torture/pr55355.C [new file with mode: 0644]
gcc/tree-sra.c

index dd882bf1d22905b3c4cd449af810e9cfe5cca90b..a9b503665bfab595e5e1351b0b0cec4e5ee0e49f 100644 (file)
@@ -1,3 +1,9 @@
+2012-12-21  Martin Jambor  <mjambor@suse.cz>
+
+       PR tree-optimization/55355
+       * tree-sra.c (type_internals_preclude_sra_p): Also check that
+       bit_position is small enough to fit a single HOST_WIDE_INT.
+
 2012-12-11  Eric Botcazou  <ebotcazou@adacore.com>
 
        PR target/54121
index ba4f111370fcc599ba5b4b20f3029f11bfb25af9..849d43206092812779d21bbc7541aa04621f0206 100644 (file)
@@ -1,3 +1,8 @@
+2012-12-21  Martin Jambor  <mjambor@suse.cz>
+
+       PR tree-optimization/55355
+       * g++.dg/torture/pr55355.C: New test.
+
 2012-12-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
        * gcc.dg/torture/pr52407.c: Add "-fno-common" option on hppa*-*-hpux*.
diff --git a/gcc/testsuite/g++.dg/torture/pr55355.C b/gcc/testsuite/g++.dg/torture/pr55355.C
new file mode 100644 (file)
index 0000000..6d8f8b6
--- /dev/null
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+
+struct A
+{
+    void funcA(void);
+};
+
+struct B {};
+
+struct C
+{
+    void funcC(void) { a_mp->funcA(); }
+
+    char buf_ma[268435456];
+    A   *a_mp;
+    B    b_m;
+};
+
+void
+func(C *c_p)
+{
+    c_p->funcC();
+}
index 7f91a936506fc91651c72f4beb06aa230bf23745..17a27d04e3f36d8585a86e34b660d5a43fe8af30 100644 (file)
@@ -666,6 +666,7 @@ type_internals_preclude_sra_p (tree type)
                || !DECL_FIELD_OFFSET (fld) || !DECL_SIZE (fld)
                || !host_integerp (DECL_FIELD_OFFSET (fld), 1)
                || !host_integerp (DECL_SIZE (fld), 1)
+               || !host_integerp (bit_position (fld), 0)
                || (AGGREGATE_TYPE_P (ft)
                    && int_bit_position (fld) % BITS_PER_UNIT != 0))
              return true;