===================================================================
@@ -1098,7 +1098,13 @@ ipa_devirt (void)
cgraph_node_name (likely_target),
likely_target->symbol.order);
if (!symtab_can_be_discarded ((symtab_node) likely_target))
- likely_target = cgraph (symtab_nonoverwritable_alias ((symtab_node)likely_target));
+ {
+ cgraph_node *alias;
+ alias = cgraph (symtab_nonoverwritable_alias
+ ((symtab_node)likely_target));
+ if (alias)
+ likely_target = alias;
+ }
nconverted++;
update = true;
cgraph_turn_edge_to_speculative
===================================================================
@@ -998,7 +998,7 @@ function_and_variable_visibility (bool w
{
struct cgraph_node *alias = cgraph (symtab_nonoverwritable_alias ((symtab_node) node));
- if (alias != node)
+ if (alias && alias != node)
{
while (node->callers)
{
===================================================================
@@ -625,7 +625,13 @@ ipa_profile (void)
of N2. Speculate on the local alias to allow inlining.
*/
if (!symtab_can_be_discarded ((symtab_node) n2))
- n2 = cgraph (symtab_nonoverwritable_alias ((symtab_node)n2));
+ {
+ cgraph_node *alias;
+ alias = cgraph (symtab_nonoverwritable_alias
+ ((symtab_node)n2));
+ if (alias)
+ n2 = alias;
+ }
nconverted++;
cgraph_turn_edge_to_speculative
(e, n2,
===================================================================
@@ -1083,6 +1083,10 @@ symtab_nonoverwritable_alias (symtab_nod
(void *)&new_node, true);
if (new_node)
return new_node;
+#ifndef ASM_OUTPUT_DEF
+ /* If aliases aren't supported by the assembler, fail. */
+ return NULL;
+#endif
/* Otherwise create a new one. */
new_decl = copy_node (node->symbol.decl);