summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Berlin <dberlin@dberlin.org>2006-03-28 14:36:56 +0000
committerDaniel Berlin <dberlin@gcc.gnu.org>2006-03-28 14:36:56 +0000
commitc245c134da2fdced8608d3e992c969ae22932752 (patch)
tree87dc369cc870f3e7587d5a12ffa63352467928cd
parentdf10833162384a6d8b9e7b1f67108c9c53e67d7f (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr25737.c23
-rw-r--r--gcc/tree-ssa-alias.c1
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);