diff options
author | Daniel Berlin <dberlin@dberlin.org> | 2006-03-28 14:36:56 +0000 |
---|---|---|
committer | Daniel Berlin <dberlin@gcc.gnu.org> | 2006-03-28 14:36:56 +0000 |
commit | c245c134da2fdced8608d3e992c969ae22932752 (patch) | |
tree | 87dc369cc870f3e7587d5a12ffa63352467928cd | |
parent | df10833162384a6d8b9e7b1f67108c9c53e67d7f (diff) | |
download | gcc-c245c134da2fdced8608d3e992c969ae22932752.tar.gz |
tree-ssa-alias.c (create_sft): Initially inherit TREE_ADDRESSABLE from parent_var.
2006-03-28 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-alias.c (create_sft): Initially inherit TREE_ADDRESSABLE
from parent_var.
From-SVN: r112451
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/pr25737.c | 23 | ||||
-rw-r--r-- | gcc/tree-ssa-alias.c | 1 |
3 files changed, 29 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f57f710a61d..6a323d6c044 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2006-03-28 Daniel Berlin <dberlin@dberlin.org> + + * tree-ssa-alias.c (create_sft): Initially inherit TREE_ADDRESSABLE + from parent_var. + 2006-03-27 Roger Sayle <roger@eyesopen.com> PR middle-end/22524 diff --git a/gcc/testsuite/gcc.c-torture/execute/pr25737.c b/gcc/testsuite/gcc.c-torture/execute/pr25737.c new file mode 100644 index 00000000000..9da63adceab --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr25737.c @@ -0,0 +1,23 @@ +extern void abort (void); + +struct delay_block { + struct delay_block *succ; +}; + +static struct delay_block Timer_Queue; + +struct delay_block* time_enqueue (struct delay_block *d) +{ + struct delay_block *q = Timer_Queue.succ; + d->succ = (void *)0; + return Timer_Queue.succ; +} + +int main(void) +{ + Timer_Queue.succ = &Timer_Queue; + if (time_enqueue (&Timer_Queue) != (void*)0) + abort (); + return 0; +} + diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index e1fcb0be831..f0d16d452a6 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -2853,6 +2853,7 @@ create_sft (tree var, tree field, unsigned HOST_WIDE_INT offset, TREE_PUBLIC (subvar) = TREE_PUBLIC (var); TREE_STATIC (subvar) = TREE_STATIC (var); TREE_READONLY (subvar) = TREE_READONLY (var); + TREE_ADDRESSABLE (subvar) = TREE_ADDRESSABLE (var); /* Add the new variable to REFERENCED_VARS. */ ann = get_var_ann (subvar); |