Commit 182e00b1 by Richard Guenther Committed by Richard Biener

re PR tree-optimization/40496 (ICE in verify_stmts with -fprefetch-loop-arrays)

2009-07-10  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/40496
	* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
	the PHI result with a compatible type.

	* g++.dg/opt/pr40496.C: New testcase.

From-SVN: r149469
parent ac7120ce
2009-07-10 Richard Guenther <rguenther@suse.de>
PR tree-optimization/40496
* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
the PHI result with a compatible type.
2009-07-10 Manuel López-Ibáñez <manu@gcc.gnu.org> 2009-07-10 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR 25509 PR 25509
......
2009-07-10 Richard Guenther <rguenther@suse.de>
PR tree-optimization/40496
* g++.dg/opt/pr40496.C: New testcase.
2009-07-10 Manuel López-Ibáñez <manu@gcc.gnu.org> 2009-07-10 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR 25509 PR 25509
......
// { dg-do compile }
// { dg-options "-O2 -fprefetch-loop-arrays -msse2" { target i?86-*-* x86_64-*-* } }
struct DOMStringHandle
{
unsigned int fLength;
int fRefCount;
};
static void *freeListPtr;
void foo(DOMStringHandle *dsg)
{
int i;
for (i = 1; i < 1023; i++)
{
*(void **) &dsg[i] = freeListPtr;
freeListPtr = &dsg[i];
}
}
...@@ -990,10 +990,19 @@ tree_transform_and_unroll_loop (struct loop *loop, unsigned factor, ...@@ -990,10 +990,19 @@ tree_transform_and_unroll_loop (struct loop *loop, unsigned factor,
/* Prefer using original variable as a base for the new ssa name. /* Prefer using original variable as a base for the new ssa name.
This is necessary for virtual ops, and useful in order to avoid This is necessary for virtual ops, and useful in order to avoid
losing debug info for real ops. */ losing debug info for real ops. */
if (TREE_CODE (next) == SSA_NAME) if (TREE_CODE (next) == SSA_NAME
&& useless_type_conversion_p (TREE_TYPE (next),
TREE_TYPE (init)))
var = SSA_NAME_VAR (next); var = SSA_NAME_VAR (next);
else if (TREE_CODE (init) == SSA_NAME) else if (TREE_CODE (init) == SSA_NAME
&& useless_type_conversion_p (TREE_TYPE (init),
TREE_TYPE (next)))
var = SSA_NAME_VAR (init); var = SSA_NAME_VAR (init);
else if (useless_type_conversion_p (TREE_TYPE (next), TREE_TYPE (init)))
{
var = create_tmp_var (TREE_TYPE (next), "unrinittmp");
add_referenced_var (var);
}
else else
{ {
var = create_tmp_var (TREE_TYPE (init), "unrinittmp"); var = create_tmp_var (TREE_TYPE (init), "unrinittmp");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment