> On 4/16/07, Paulo J. Matos <[EMAIL PROTECTED]> wrote:
> >Hello all,
> >
> >I'm going through the bodies of all user-defined functions. I'm using
> >as user-defined function as one that:
> >DECL_BUILT_IN(node) == 0.
> 
> >
> >Problem is that for  a function (derived from a C++ file) whose output
> >from my pass is (output is self-explanatory, I think):
> >Registering cgraph node:
> >_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
> >[operator<<]... SUCCESSFUL
> >Declared on 
> >/home/pmatos/gsvt-bin/lib/gcc/x86_64-unknown-linux-gnu/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc,
> >line 735
> >Decl Node Code is function_decl
> >Registering output void ...SUCCESSFUL
> >Arguments: __out : reference_type, __s : pointer_type
> >
> >Well, this is definitely builtin but DECL_BUILT_IN == 0, which means
> >that when I do FOR_EACH_BB_FN, I'm getting a segmentation fault
> 
> First, it's not built in, because it's defined in a source file.
> Builtin functions are those defined by the compiler.
> 
> Second, we should make FOR_EACH_BB_FN never crash on empty tree functions.
> It seems really rude to do otherwise.

Well, it works on empty functions, but why would you ever want to walk
body of function that is not there?
cgraph_function_body_availability should be checked by IPA passes
to see what bodies are there and what can or can not change by
linking...

Honza
> Just because we don't have a body for a function doesn't mean we
> should crash.  Users shouldn't have to be checking random things like
> DECL_SAVED_TREE to determine if FOR_EACH_BB_FN will work (this is not
> to say that they should be able to pass any random crap to it, but it
> should be detecting if the function has a body)

Reply via email to