aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIain Buclaw <ibuclaw@gdcproject.org>2020-11-01 16:39:10 +0100
committerIain Buclaw <ibuclaw@gdcproject.org>2020-11-01 18:21:35 +0100
commit895fdc1f4c9ff1dfb18b80af838aa353363edb40 (patch)
tree379a6d0ef89c6bdab9174b083c6d9d6349f3c1be
parent318be202bb7a8b4b1068f7467ad899a9e1f61618 (diff)
downloadgcc-895fdc1f4c9ff1dfb18b80af838aa353363edb40.zip
gcc-895fdc1f4c9ff1dfb18b80af838aa353363edb40.tar.gz
gcc-895fdc1f4c9ff1dfb18b80af838aa353363edb40.tar.bz2
ipa: Fix segmentation fault in function_summary<clone_info*>::get(cgraph_node*)
PR 97660 occurs when cgraph_node::get returns NULL, and this NULL cgraph_node is then passed to clone_info::get. As the original assert prior to the regressing change in r11-4587 allowed for the cgraph_node to be NULL, clone_info::get is now only called when cgraph_node::get returns a nonnull value. gcc/ChangeLog: PR ipa/97660 * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Don't call clone_info::get when cgraph_node::get returns NULL.
-rw-r--r--gcc/cgraph.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index 9f3a728..36bdb00 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -1491,9 +1491,11 @@ cgraph_edge::redirect_call_stmt_to_callee (cgraph_edge *e)
}
if (flag_checking && decl)
{
- cgraph_node *node = cgraph_node::get (decl);
- clone_info *info = clone_info::get (node);
- gcc_assert (!node || !info || !info->param_adjustments);
+ if (cgraph_node *node = cgraph_node::get (decl))
+ {
+ clone_info *info = clone_info::get (node);
+ gcc_assert (!info || !info->param_adjustments);
+ }
}
clone_info *callee_info = clone_info::get (e->callee);