]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
2016-01-13 Richard Biener <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 13 Jan 2016 08:27:42 +0000 (08:27 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 13 Jan 2016 08:27:42 +0000 (08:27 +0000)
PR tree-optimization/69242
* tree-ssa-sccvn.c (visit_reference_op_load): Replace bogus
assert with a check.

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232315 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/pr69242.c [new file with mode: 0644]
gcc/tree-ssa-sccvn.c

index cb2ec45280a2b45b10b45aca82edc086f9d7a8cb..e7e3601058dd8623a63ef21f37a10b49033350c8 100644 (file)
@@ -1,3 +1,9 @@
+2016-01-13  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/69242
+       * tree-ssa-sccvn.c (visit_reference_op_load): Replace bogus
+       assert with a check.
+
 2016-01-13  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/69186
index 0ce47d49ea73795b5af54b9e9b3d7a3946789f5a..4568a636b6268d77b1416e8da71fe5b40e1e044e 100644 (file)
@@ -1,3 +1,8 @@
+2016-01-13  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/69242
+       * gcc.dg/torture/pr69242.c: New testcase.
+
 2016-01-13  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/69186
diff --git a/gcc/testsuite/gcc.dg/torture/pr69242.c b/gcc/testsuite/gcc.dg/torture/pr69242.c
new file mode 100644 (file)
index 0000000..d7f1718
--- /dev/null
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-w" } */
+
+int a[1];
+void *memcpy();
+int smx_ctx_base_factory_create_context_sized();
+void getcontext();
+void smx_ctx_sysv_create_context() {
+    int *b = (int *)smx_ctx_base_factory_create_context_sized();
+    getcontext();
+    memcpy(a, &b, sizeof(int));
+    switch (a[0])
+      ;
+}
+
index f231ebefbaa7ef700a325128388690a7fa5c343e..669d0b1e8a00aeee0c03dc80ef49edfd17947501 100644 (file)
@@ -3221,8 +3221,11 @@ visit_reference_op_load (tree lhs, tree op, gimple *stmt)
              gimple_seq stmts = NULL;
              result = maybe_push_res_to_seq (rcode, TREE_TYPE (op), ops,
                                              &stmts);
-             gcc_assert (result && gimple_seq_singleton_p (stmts));
-             new_stmt = gimple_seq_first_stmt (stmts);
+             if (result)
+               {
+                 gcc_assert (gimple_seq_singleton_p (stmts));
+                 new_stmt = gimple_seq_first_stmt (stmts);
+               }
            }
          else
            /* The expression is already available.  */