This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Fix PR69242
- From: Richard Biener <rguenther at suse dot de>
- To: gcc-patches at gcc dot gnu dot org
- Date: Wed, 13 Jan 2016 09:25:52 +0100 (CET)
- Subject: [PATCH] Fix PR69242
- Authentication-results: sourceware.org; auth=none
Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.
Richard.
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.
* gcc.dg/torture/pr69242.c: New testcase.
Index: gcc/tree-ssa-sccvn.c
===================================================================
*** gcc/tree-ssa-sccvn.c (revision 232261)
--- gcc/tree-ssa-sccvn.c (working copy)
*************** visit_reference_op_load (tree lhs, tree
*** 3221,3228 ****
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);
}
else
/* The expression is already available. */
--- 3221,3231 ----
gimple_seq stmts = NULL;
result = maybe_push_res_to_seq (rcode, TREE_TYPE (op), ops,
&stmts);
! if (result)
! {
! gcc_assert (gimple_seq_singleton_p (stmts));
! new_stmt = gimple_seq_first_stmt (stmts);
! }
}
else
/* The expression is already available. */
Index: gcc/testsuite/gcc.dg/torture/pr69242.c
===================================================================
*** gcc/testsuite/gcc.dg/torture/pr69242.c (revision 0)
--- gcc/testsuite/gcc.dg/torture/pr69242.c (working copy)
***************
*** 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])
+ ;
+ }
+