+2014-10-14 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR ada/62019
+ * tree-eh.c (tree_could_trap) <FUNCTION_DECL>: Revamp and really
+ do not choke on null node.
+ <VAR_DECL>: Likewise.
+
2014-10-14 DJ Delorie <dj@redhat.com>
* machmode.h (int_n_data_t): New.
/* Assume that accesses to weak functions may trap, unless we know
they are certainly defined in current TU or in some other
LTO partition. */
- if (DECL_WEAK (expr) && !DECL_COMDAT (expr))
+ if (DECL_WEAK (expr) && !DECL_COMDAT (expr) && DECL_EXTERNAL (expr))
{
- struct cgraph_node *node;
- if (!DECL_EXTERNAL (expr))
- return false;
- node = cgraph_node::get (expr)->function_symbol ();
- if (node && node->in_other_partition)
- return false;
- return true;
+ cgraph_node *node = cgraph_node::get (expr);
+ if (node)
+ node = node->function_symbol ();
+ return !(node && node->in_other_partition);
}
return false;
/* Assume that accesses to weak vars may trap, unless we know
they are certainly defined in current TU or in some other
LTO partition. */
- if (DECL_WEAK (expr) && !DECL_COMDAT (expr))
+ if (DECL_WEAK (expr) && !DECL_COMDAT (expr) && DECL_EXTERNAL (expr))
{
- varpool_node *node;
- if (!DECL_EXTERNAL (expr))
- return false;
- node = varpool_node::get (expr)->ultimate_alias_target ();
- if (node && node->in_other_partition)
- return false;
- return true;
+ varpool_node *node = varpool_node::get (expr);
+ if (node)
+ node = node->ultimate_alias_target ();
+ return !(node && node->in_other_partition);
}
return false;