diff options
Diffstat (limited to 'bz90949.patch')
-rw-r--r-- | bz90949.patch | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/bz90949.patch b/bz90949.patch deleted file mode 100644 index e545844c5d7e..000000000000 --- a/bz90949.patch +++ /dev/null @@ -1,88 +0,0 @@ -Index: gcc/testsuite/gcc.c-torture/execute/pr90949.c -=================================================================== ---- gcc/testsuite/gcc.c-torture/execute/pr90949.c (nonexistent) -+++ gcc/testsuite/gcc.c-torture/execute/pr90949.c (revision 272555) -@@ -0,0 +1,42 @@ -+void __attribute__ ((noipa, noinline)) my_puts (const char *str) { } -+ -+void __attribute__ ((noipa, noinline)) my_free (void *p) { } -+ -+ -+struct Node -+{ -+ struct Node *child; -+}; -+ -+struct Node space[2] = { }; -+ -+struct Node * __attribute__ ((noipa, noinline)) my_malloc (int bytes) -+{ -+ return &space[0]; -+} -+ -+void -+walk (struct Node *module, int cleanup) -+{ -+ if (module == 0) -+ { -+ return; -+ } -+ if (!cleanup) -+ { -+ my_puts ("No cleanup"); -+ } -+ walk (module->child, cleanup); -+ if (cleanup) -+ { -+ my_free (module); -+ } -+} -+ -+int -+main () -+{ -+ struct Node *node = my_malloc (sizeof (struct Node)); -+ node->child = 0; -+ walk (node, 1); -+} -Index: gcc/tree-ssa-copy.c -=================================================================== ---- gcc/tree-ssa-copy.c (revision 272554) -+++ gcc/tree-ssa-copy.c (revision 272555) -@@ -545,13 +545,12 @@ - duplicate_ssa_name_ptr_info (copy_of[i].value, - SSA_NAME_PTR_INFO (var)); - /* Points-to information is cfg insensitive, -- but alignment info might be cfg sensitive, if it -- e.g. is derived from VRP derived non-zero bits. -- So, do not copy alignment info if the two SSA_NAMEs -- aren't defined in the same basic block. */ -+ but [E]VRP might record context sensitive alignment -+ info, non-nullness, etc. So reset context sensitive -+ info if the two SSA_NAMEs aren't defined in the same -+ basic block. */ - if (var_bb != copy_of_bb) -- mark_ptr_info_alignment_unknown -- (SSA_NAME_PTR_INFO (copy_of[i].value)); -+ reset_flow_sensitive_info (copy_of[i].value); - } - else if (!POINTER_TYPE_P (TREE_TYPE (var)) - && SSA_NAME_RANGE_INFO (var) -Index: gcc/tree-ssanames.c -=================================================================== ---- gcc/tree-ssanames.c (revision 272554) -+++ gcc/tree-ssanames.c (revision 272555) -@@ -820,7 +820,12 @@ - { - /* points-to info is not flow-sensitive. */ - if (SSA_NAME_PTR_INFO (name)) -- mark_ptr_info_alignment_unknown (SSA_NAME_PTR_INFO (name)); -+ { -+ /* [E]VRP can derive context sensitive alignment info and -+ non-nullness properties. We must reset both. */ -+ mark_ptr_info_alignment_unknown (SSA_NAME_PTR_INFO (name)); -+ SSA_NAME_PTR_INFO (name)->pt.null = 1; -+ } - } - else - SSA_NAME_RANGE_INFO (name) = NULL; |