]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-ssa-alias.c (create_sft): Initially inherit TREE_ADDRESSABLE from parent_var.
authorDaniel Berlin <dberlin@dberlin.org>
Tue, 28 Mar 2006 14:36:56 +0000 (14:36 +0000)
committerDaniel Berlin <dberlin@gcc.gnu.org>
Tue, 28 Mar 2006 14:36:56 +0000 (14:36 +0000)
2006-03-28  Daniel Berlin  <dberlin@dberlin.org>

* tree-ssa-alias.c (create_sft): Initially inherit TREE_ADDRESSABLE
from parent_var.

From-SVN: r112451

gcc/ChangeLog
gcc/testsuite/gcc.c-torture/execute/pr25737.c [new file with mode: 0644]
gcc/tree-ssa-alias.c

index f57f710a61db646a1c8d74998bc72bac5b7eb295..6a323d6c0442626b2875fdd147b0031b85b1a5f4 100644 (file)
@@ -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 (file)
index 0000000..9da63ad
--- /dev/null
@@ -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;
+}
+
index e1fcb0be8315f365e75589f759de64d38e23cae6..f0d16d452a6a3f6919627908a73249fbb2f93cf8 100644 (file)
@@ -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);