Message ID | CAAe5K+UaWvRKpu62C3wPaOdLSQ4rSvQKv0EdEgNuPttKtaPp3g@mail.gmail.com |
---|---|
State | New |
Headers | show |
ok. David On Sat, Aug 23, 2014 at 11:42 AM, Teresa Johnson <tejohnson@google.com> wrote: > Fixes seg fault when using -fopt-info with AutoFDO LIPO. Ensure that the > mapping between module name and ident is setup. > > Tested with regression tests and internal benchmarks. Ok for google/4_9 > > 2014-08-23 Teresa Johnson <tejohnson@google.com> > > Google ref b/17124135 > * auto-profile.c (read_aux_modules): Record the module name/ident pair. > * coverage.c (record_module_name): Make non-static. > * l-ipo.h (record_module_name): Ditto. > > Index: auto-profile.c > =================================================================== > --- auto-profile.c (revision 214320) > +++ auto-profile.c (working copy) > @@ -958,6 +958,7 @@ read_aux_modules (void) > module_infos = XCNEWVEC (gcov_module_info *, num_aux_modules + 1); > module_infos[0] = module; > primary_module_id = module->ident; > + record_module_name (module->ident, lbasename (in_fnames[0])); > if (aux_modules == NULL) > return; > unsigned curr_module = 1, max_group = PARAM_VALUE (PARAM_MAX_LIPO_GROUP); > @@ -1004,6 +1005,7 @@ read_aux_modules (void) > } > module_infos[curr_module++] = aux_module; > add_input_filename (*iter); > + record_module_name (aux_module->ident, lbasename (*iter)); > } > } > > Index: coverage.c > =================================================================== > --- coverage.c (revision 214320) > +++ coverage.c (working copy) > @@ -658,7 +658,7 @@ typedef struct { > > static vec<mod_id_to_name_t> *mod_names; > > -static void > +void > record_module_name (unsigned int mod_id, const char *name) > { > mod_id_to_name_t t; > Index: l-ipo.h > =================================================================== > --- l-ipo.h (revision 214320) > +++ l-ipo.h (working copy) > @@ -63,6 +63,7 @@ int equivalent_struct_types_for_tbaa (const_tree t > void lipo_link_and_fixup (void); > extern void copy_defined_module_set (tree, tree); > extern bool is_parsing_done_p (void); > +extern void record_module_name (unsigned int, const char *); > extern const char* get_module_name (unsigned int); > > #endif > > -- > Teresa Johnson | Software Engineer | tejohnson@google.com | 408-460-2413
Index: auto-profile.c =================================================================== --- auto-profile.c (revision 214320) +++ auto-profile.c (working copy) @@ -958,6 +958,7 @@ read_aux_modules (void) module_infos = XCNEWVEC (gcov_module_info *, num_aux_modules + 1); module_infos[0] = module; primary_module_id = module->ident; + record_module_name (module->ident, lbasename (in_fnames[0])); if (aux_modules == NULL) return; unsigned curr_module = 1, max_group = PARAM_VALUE (PARAM_MAX_LIPO_GROUP); @@ -1004,6 +1005,7 @@ read_aux_modules (void) } module_infos[curr_module++] = aux_module; add_input_filename (*iter); + record_module_name (aux_module->ident, lbasename (*iter)); } } Index: coverage.c =================================================================== --- coverage.c (revision 214320) +++ coverage.c (working copy) @@ -658,7 +658,7 @@ typedef struct { static vec<mod_id_to_name_t> *mod_names; -static void +void record_module_name (unsigned int mod_id, const char *name) { mod_id_to_name_t t; Index: l-ipo.h =================================================================== --- l-ipo.h (revision 214320) +++ l-ipo.h (working copy) @@ -63,6 +63,7 @@ int equivalent_struct_types_for_tbaa (const_tree t void lipo_link_and_fixup (void); extern void copy_defined_module_set (tree, tree); extern bool is_parsing_done_p (void); +extern void record_module_name (unsigned int, const char *); extern const char* get_module_name (unsigned int); #endif