re PR tree-optimization/90949 (null pointer check removed)
PR tree-optimization/90949 * tree-ssa-copy.c (fini_copy_prop): Use reset_flow_sensitive_info. * tree-ssanames.c (reset_flow_sensitive_info): Reset non-null state. * gcc.c-torture/execute/pr90949.c: New test. From-SVN: r272555
This commit is contained in:
parent
1296eaf6ed
commit
84338a1498
|
@ -1,3 +1,9 @@
|
||||||
|
2019-06-21 Jeff Law <law@redhat.com>
|
||||||
|
|
||||||
|
PR tree-optimization/90949
|
||||||
|
* tree-ssa-copy.c (fini_copy_prop): Use reset_flow_sensitive_info.
|
||||||
|
* tree-ssanames.c (reset_flow_sensitive_info): Reset non-null state.
|
||||||
|
|
||||||
2019-06-21 Richard Biener <rguenther@suse.de>
|
2019-06-21 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
PR debug/90914
|
PR debug/90914
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2019-06-21 Jeff Law <law@redhat.com>
|
||||||
|
|
||||||
|
PR tree-optimization/90949
|
||||||
|
* gcc.c-torture/execute/pr90949.c: New test.
|
||||||
|
|
||||||
2019-06-21 Marek Polacek <polacek@redhat.com>
|
2019-06-21 Marek Polacek <polacek@redhat.com>
|
||||||
|
|
||||||
PR c++/90953 - ICE with -Wmissing-format-attribute.
|
PR c++/90953 - ICE with -Wmissing-format-attribute.
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
|
@ -545,13 +545,12 @@ fini_copy_prop (void)
|
||||||
duplicate_ssa_name_ptr_info (copy_of[i].value,
|
duplicate_ssa_name_ptr_info (copy_of[i].value,
|
||||||
SSA_NAME_PTR_INFO (var));
|
SSA_NAME_PTR_INFO (var));
|
||||||
/* Points-to information is cfg insensitive,
|
/* Points-to information is cfg insensitive,
|
||||||
but alignment info might be cfg sensitive, if it
|
but [E]VRP might record context sensitive alignment
|
||||||
e.g. is derived from VRP derived non-zero bits.
|
info, non-nullness, etc. So reset context sensitive
|
||||||
So, do not copy alignment info if the two SSA_NAMEs
|
info if the two SSA_NAMEs aren't defined in the same
|
||||||
aren't defined in the same basic block. */
|
basic block. */
|
||||||
if (var_bb != copy_of_bb)
|
if (var_bb != copy_of_bb)
|
||||||
mark_ptr_info_alignment_unknown
|
reset_flow_sensitive_info (copy_of[i].value);
|
||||||
(SSA_NAME_PTR_INFO (copy_of[i].value));
|
|
||||||
}
|
}
|
||||||
else if (!POINTER_TYPE_P (TREE_TYPE (var))
|
else if (!POINTER_TYPE_P (TREE_TYPE (var))
|
||||||
&& SSA_NAME_RANGE_INFO (var)
|
&& SSA_NAME_RANGE_INFO (var)
|
||||||
|
|
|
@ -820,7 +820,12 @@ reset_flow_sensitive_info (tree name)
|
||||||
{
|
{
|
||||||
/* points-to info is not flow-sensitive. */
|
/* points-to info is not flow-sensitive. */
|
||||||
if (SSA_NAME_PTR_INFO (name))
|
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
|
else
|
||||||
SSA_NAME_RANGE_INFO (name) = NULL;
|
SSA_NAME_RANGE_INFO (name) = NULL;
|
||||||
|
|
Loading…
Reference in New Issue