ipa-prop.c (compute_complex_pass_through): If we cannot compute a non-varying offset for IPA_JF_ANCESTOR punt.

2009-08-14  Richard Guenther  <rguenther@suse.de>

	* ipa-prop.c (compute_complex_pass_through): If we cannot
	compute a non-varying offset for IPA_JF_ANCESTOR punt.

	* gcc.c-torture/execute/20090814-1.c: New testcase.

From-SVN: r150757
This commit is contained in:
Richard Guenther 2009-08-14 15:07:43 +00:00 committed by Richard Biener
parent 065312cfdd
commit 1a15bfdcdc
4 changed files with 36 additions and 1 deletions

View file

@ -1,3 +1,8 @@
2009-08-14 Richard Guenther <rguenther@suse.de>
* ipa-prop.c (compute_complex_pass_through): If we cannot
compute a non-varying offset for IPA_JF_ANCESTOR punt.
2009-08-14 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
* c-lex.c (c_lex_with_flags): Increase size of local variable

View file

@ -377,7 +377,10 @@ compute_complex_pass_through (struct ipa_node_params *info,
type = TREE_TYPE (op1);
op1 = get_ref_base_and_extent (op1, &offset, &size, &max_size);
if (TREE_CODE (op1) != INDIRECT_REF)
if (TREE_CODE (op1) != INDIRECT_REF
/* If this is a varying address, punt. */
|| max_size == -1
|| max_size != size)
return;
op1 = TREE_OPERAND (op1, 0);
if (TREE_CODE (op1) != SSA_NAME

View file

@ -1,3 +1,7 @@
2009-08-14 Richard Guenther <rguenther@suse.de>
* gcc.c-torture/execute/20090814-1.c: New testcase.
2009-08-14 David Edelsohn <edelsohn@gnu.org>
* gcc.dg/graphite/graphite_autopar: Move to libgomp testsuite.

View file

@ -0,0 +1,23 @@
int __attribute__((noinline))
bar (int *a)
{
return *a;
}
int i;
int __attribute__((noinline))
foo (int (*a)[2])
{
return bar (&(*a)[i]);
}
extern void abort (void);
int a[2];
int main()
{
a[0] = -1;
a[1] = 42;
i = 1;
if (foo (&a) != 42)
abort ();
return 0;
}