diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6f67e8586caa73dfb35f9b780134b47747aa6cbe..ed31c56f95fe0c7efe40c8930dba4305b4a3cdd6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2009-10-09 Richard Guenther <rguenther@suse.de> + + * cgraph.c (cgraph_create_edge): Check for NULL call_stmt + before calling stmt_can_throw_external. + 2009-10-09 Eric Botcazou <ebotcazou@adacore.com> PR tree-optimization/40071 diff --git a/gcc/cgraph.c b/gcc/cgraph.c index 01fbb9a85d79610e7761127cdcb80f7c332238f3..167e8a8e7b408217bd1aeccba404f4ef6bdbe93f 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -822,9 +822,9 @@ cgraph_create_edge (struct cgraph_node *caller, struct cgraph_node *callee, if (call_stmt) { #ifdef ENABLE_CHECKING - /* This is rather pricely check possibly trigerring construction of call stmt - hashtable. */ - gcc_assert (!cgraph_edge (caller, call_stmt)); + /* This is rather pricely check possibly trigerring construction of + call stmt hashtable. */ + gcc_assert (!cgraph_edge (caller, call_stmt)); #endif gcc_assert (is_gimple_call (call_stmt)); @@ -847,7 +847,8 @@ cgraph_create_edge (struct cgraph_node *caller, struct cgraph_node *callee, edge->callee = callee; edge->call_stmt = call_stmt; push_cfun (DECL_STRUCT_FUNCTION (caller->decl)); - edge->can_throw_external = stmt_can_throw_external (call_stmt); + edge->can_throw_external + = call_stmt ? stmt_can_throw_external (call_stmt) : false; pop_cfun (); edge->prev_caller = NULL; edge->next_caller = callee->callers;