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] |
2010/11/16 Jan Hubicka <hubicka@ucw.cz>: >> On Tue, Nov 16, 2010 at 11:46 AM, Kai Tietz <Kai.Tietz@onevision.com> wrote: >> > Hello, >> > >> > this patch introduces an new flag for dllexport (likewise to the already >> > existing DLLIMPORT flag) to structure tree_decl_with_vis in tree.h header.. >> > As some places still dependent on checking explicit for >> > dllimport/dllexport attribute, I didn't omitted here the the attribute >> > node copy. This is maybe something for 4.7 gcc. >> > >> > ChangeLog >> > >> > ? ? ? ?* config/i386/winnt-cxx.c (maybe_add_dllexport): Set >> > DECL_DLLEXPORT_P. >> > ? ? ? ?* config/i386/winnt.c (i386_pe_determine_dllexport_p): Use >> > DECL_DLLEXPORT_P >> > ? ? ? ?instead of doing attribute lookup. >> > ? ? ? ?* tree.c (merge_dllimport_decl_attributes): Likewise. >> > ? ? ? ?(handle_dll_attribute): Set DECL_DLLEXPORT_P flag. >> > ? ? ? ?* lto-streamer-in.c (unpack_ts_decl_with_vis_value_fields): >> > Restore dllexport flag. >> > ? ? ? ?* lto-streamer-out.c (pack_ts_decl_with_vis_value_fields): Save >> > dllexport flag. >> > ? ? ? ?* tree-emutls.c (new_emutls_decl): Copy DECL_DLLEXPORT_P flag. >> > ? ? ? ?* tree.h (tree_decl_with_vis):Add new member dllexport_flag. >> > ? ? ? ?(DECL_DLLEXPORT_P): New macro. >> > ? ? ? ?* ipa.c (cgraph_externally_visible_p): Check for DECL_DLLEXPORT_P. >> > ? ? ? ?(varpool_externally_visible_p): Likewise. >> > ? ? ? ?*cp/optimize.c (maybe_clone_body): Copy DECL_DLLEXPORT_P, too. >> > >> > Tested for x86_64-w64-mingw32, i686-w64-mingw32, and i686-pc-cygwin. Ok >> > for apply? >> >> What's the difference between externally_visible and dllexport? >> >> @@ -3121,6 +3125,7 @@ struct GTY(()) tree_decl_with_vis { >> ? unsigned in_text_section : 1; >> ? unsigned in_constant_pool : 1; >> ? unsigned dllimport_flag : 1; >> + unsigned dllexport_flag : 1; >> ? /* Don't belong to VAR_DECL exclusively. ?*/ >> ? unsigned weak_flag : 1; >> >> please keep 1) flags in 8 bit groups, 2) add it below the right comment >> (it doesn't belong to VAR_DECLs exclusively, right?) >> >> That said, why not simply add externally_visible when seeing dllexport? > > I would not be too offended by doing that. > >> Why not make externally_visible use a flag (or intergrate that with >> visibility support)? > > We already have flag in cgraph node, so we search for it in declaration > constant number of times (I think twice, once for visibility pass and once for > whole_program_visibility), so adding flag seems bit redundant. > > We can also just search for dllexport attribute at the same place, it would > not be terribly expensive either. > > Honza >> >> Richard. >> >> > Regards, >> > ?i.A. Kai Tietz >> > >> > | ?(\_/) ?This is Bunny. Copy and paste Bunny >> > | (='.'=) into your signature to help him gain >> > | (")_(") world domination. >> > >> > > So, I moved the new flag at the end of the structure to keep alignment of 8 bit blocks. Additionally I add a testcase for dllexport and whole-program. Ok for apply? Regards, Kai -- |? (\_/) This is Bunny. Copy and paste | (='.'=) Bunny into your signature to help | (")_(") him gain world domination
Attachment:
dllexport.diff
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |