This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: PATCH: flag_external and DECL_EXTERNAL documentation


>>>>> "Lars" == Lars Brinkhoff <lars.spam@nocrew.org> writes:

> Jason Merrill <jason@redhat.com> writes:
>> > -/* In a VAR_DECL or FUNCTION_DECL,
>> > -   nonzero means external reference:
>> > -   do not allocate storage, and refer to a definition elsewhere.  */
>> > +/* In a VAR_DECL or FUNCTION_DECL, nonzero means external reference:
>> > +   do not allocate storage, and refer to a definition elsewhere.
>> > +   Note that DECL_EXTERNAL is always set when a non-nested function is
>> > +   declared, and cleared when the function definition is encountered. */
>> 
>> This is describing C-specific behavior, and should not be in a backend
>> file.  In C, function declarations are implicitly extern, but this may not
>> be true of other languages.
>> 
>> I think the existing comment is fine.

> In the back end I'm currently writing, whenever a function call is to
> be generated I need to know whether the function is defined in the
> current translation unit or not.  After reading the comment, I thought
> DECL_EXTERNAL provided that information.

> Since DECL_EXTERNAL doesn't quite work for this, is there another way
> to find out whether a function is defined in the current translation
> unit?  I'm assuming that the user may have to explicitly declare this
> (i.e. declaring a function to be "extern", or not, in C).

The rs6000 port uses

  ((TREE_ASM_WRITTEN || !TREE_PUBLIC) && ! DECL_WEAK).

Jason

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]