This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: bootstrap failure on mainline for mmix
Hans-Peter Nilsson wrote:-
> The SEGV is function_attribute_inlinable_p trying to dereference
> a NULL pointer:
> => for (i = 0; targetm.attribute_table[i].name != NULL; i++)
Oops, I thought attribs.c was the only user. That function is
very verbose for what it does, so I took the opportunity to
simplify it whilst I was there. Does this patch work for you?
I've checked there are no other users.
Neil.
* integrate.c (function_attribute_inlinable_p): Simplify.
Check the table pointer is not NULL.
Index: integrate.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/integrate.c,v
retrieving revision 1.189
diff -u -p -r1.189 integrate.c
--- integrate.c 22 Apr 2002 23:22:32 -0000 1.189
+++ integrate.c 25 Apr 2002 17:30:09 -0000
@@ -132,30 +132,22 @@ bool
function_attribute_inlinable_p (fndecl)
tree fndecl;
{
- bool has_machine_attr = false;
- tree a;
-
- for (a = DECL_ATTRIBUTES (fndecl); a; a = TREE_CHAIN (a))
+ if (targetm.attribute_table)
{
- tree name = TREE_PURPOSE (a);
- int i;
+ tree a;
- for (i = 0; targetm.attribute_table[i].name != NULL; i++)
+ for (a = DECL_ATTRIBUTES (fndecl); a; a = TREE_CHAIN (a))
{
- if (is_attribute_p (targetm.attribute_table[i].name, name))
- {
- has_machine_attr = true;
- break;
- }
+ tree name = TREE_PURPOSE (a);
+ int i;
+
+ for (i = 0; targetm.attribute_table[i].name != NULL; i++)
+ if (is_attribute_p (targetm.attribute_table[i].name, name))
+ return (*targetm.function_attribute_inlinable_p) (fndecl);
}
- if (has_machine_attr)
- break;
}
- if (has_machine_attr)
- return (*targetm.function_attribute_inlinable_p) (fndecl);
- else
- return true;
+ return true;
}
/* Zero if the current function (whose FUNCTION_DECL is FNDECL)