re PR tree-optimization/69242 (ICE in visit_reference_op_load, at tree-ssa-sccvn.c:3224)

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.

From-SVN: r232315
This commit is contained in:
Richard Biener 2016-01-13 08:27:42 +00:00 committed by Richard Biener
parent ccbd710399
commit 40311329e5
4 changed files with 31 additions and 2 deletions

View 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

View 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

View File

@ -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])
;
}

View 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. */