mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-10 07:10:27 +08:00
re PR tree-optimization/39041 (ICE on valid during vrp2)
2009-01-30 Richard Guenther <rguenther@suse.de> PR tree-optimization/39041 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Propagate variable indices only if the types match for this stmt. * gcc.c-torture/compile/pr39041.c: New testcase. From-SVN: r143808
This commit is contained in:
parent
d0728ae0d8
commit
5f4d82c2ea
@ -1,3 +1,9 @@
|
||||
2009-01-30 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/39041
|
||||
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
|
||||
Propagate variable indices only if the types match for this stmt.
|
||||
|
||||
2009-01-30 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/39013
|
||||
|
@ -1,3 +1,8 @@
|
||||
2009-01-30 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/39041
|
||||
* gcc.c-torture/compile/pr39041.c: New testcase.
|
||||
|
||||
2009-01-30 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/39013
|
||||
|
28
gcc/testsuite/gcc.c-torture/compile/pr39041.c
Normal file
28
gcc/testsuite/gcc.c-torture/compile/pr39041.c
Normal file
@ -0,0 +1,28 @@
|
||||
int test_bit(int nr, void *addr)
|
||||
{
|
||||
int *a = (int *)addr;
|
||||
int mask;
|
||||
a += nr;
|
||||
mask = 1 << nr;
|
||||
return mask & *a;
|
||||
}
|
||||
struct {
|
||||
struct {
|
||||
int disabled;
|
||||
} *data[1];
|
||||
} trace;
|
||||
struct {
|
||||
unsigned bits[1];
|
||||
} cpumask;
|
||||
void inc(int *);
|
||||
void dec(int *);
|
||||
int foo(void)
|
||||
{
|
||||
int cpu;
|
||||
for (cpu = 0; cpu < 1; cpu++) {
|
||||
if (test_bit(cpu, cpumask.bits))
|
||||
inc(&trace.data[cpu]->disabled);
|
||||
if (!test_bit(cpu, cpumask.bits))
|
||||
dec(&trace.data[cpu]->disabled);
|
||||
}
|
||||
}
|
@ -845,6 +845,7 @@ forward_propagate_addr_expr_1 (tree name, tree def_rhs,
|
||||
array elements, then the result is converted into the proper
|
||||
type for the arithmetic. */
|
||||
if (TREE_CODE (rhs2) == SSA_NAME
|
||||
&& useless_type_conversion_p (TREE_TYPE (name), TREE_TYPE (def_rhs))
|
||||
/* Avoid problems with IVopts creating PLUS_EXPRs with a
|
||||
different type than their operands. */
|
||||
&& useless_type_conversion_p (TREE_TYPE (lhs), TREE_TYPE (def_rhs)))
|
||||
|
Loading…
x
Reference in New Issue
Block a user