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>
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>
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,
/* Prefer using original variable as a base for the new ssa name.
This is necessary for virtual ops, and useful in order to avoid
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);
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);
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
{
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