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]
Other format: [Raw text]

Re: [PLUGIN] Fix PLUGIN_FINISH_TYPE


Hello Romain,

Sorry for my late reply to this thread.

Romain Geissler <romain.geissler@st.com> a Ãcrit:

>> Just to be sure I understand, do you need to be notified about *uses* of
>> types and decls as well?  If so, maybe a new kind of event should
>> probably be defined, because PLUGIN_FINISH_DECL and PLUGIN_FINISH_TYPE
>> seem to have more to do with declaring/defining decls and types than
>> using them.
>>
>
> Personally i don't need to catch all struct uses, but i need to catch struct declarations.
> I want to apply some __attributes__ to a given struct type, for
> example let's say i need to mark *struct my_struct* as deprecated
> thanks to a plugin. I know how to apply some attributes to a type or a
> decl. See the plugin (test_plugin.c) and the test files attached.
>
> With test_pass.c, my_struct is declared first, then defined after,
> applying the deprecated attribute works.
> With test_fail.c, my_struct is declared and defined at the same time,
> applying the deprecated attribute doesn't work with the current trunk
> (and also with my patch).
> I got:
> test_fail.c:4:1: warning: type attributes ignored after type is already defined [-Wattributes]

Right, you cannot use (cplus_)decl_attributes on type that is fully
created.  The function warns in that case.

> So i may need a PLUGIN_FINISH_TYPE_DECLARATION triggered when the type
> is declared but before it is finally defined.

Hmmh.  For this specific case, maybe just setting the TREE_DEPRECATED
flag on the tree node of type could do what you want?

-- 
		Dodji


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