the patch is ok. thanks,
David On Thu, Jul 25, 2013 at 2:53 PM, Sriraman Tallam <tmsri...@google.com> wrote: > On Wed, Jul 24, 2013 at 3:21 PM, Xinliang David Li <davi...@google.com> wrote: >> Can you collect some number on ggc_memory increase with this change >> in profile_gen build -- the value is recorded gcov_module_info object >> in coverage.c. > > The ggc_memory increase if < 0.2% for large modules (initial usage > around 100MB and greater). For some small modules, whose initial > parser memory usage is around 2MB, I see a 80% increase. > > Thanks > Sri > >> >> thanks, >> >> David >> >> On Wed, Jul 24, 2013 at 3:14 PM, Sriraman Tallam <tmsri...@google.com> wrote: >>> The following test-case fails in LIPO mode during profile-use build: >>> >>> main.ccthe >>> ------------ >>> __attribute__((target("sse4.2"))) >>> unsigned int problem_aux (unsigned int A, unsigned int B); >>> >>> >>> int main (int argc, char *argv[]) >>> { >>> return problem_aux (0, 0); >>> } >>> >>> aux.cc >>> --------- >>> __attribute__((target("sse4.2"))) >>> unsigned int problem_aux (unsigned int A, unsigned int B) >>> { >>> return __builtin_ia32_crc32qi (A, B); >>> } >>> >>> $ g++ -O2 -fprofile-generate main.cc aux.cc >>> $ ./a.out >>> $ g++ -O2 -fprofile-use main.cc >>> error: '__builtin_ia32_crc32qi' was not declared in this scope >>> >>> This happens when parsing the auxiliary module. __builtin_ia32_crc32qi >>> is a target specific builtin that gets created after the target >>> attribute is seen in the declaration of problem_aux in the primary >>> module. This is too late for adding theisbuiltin to the list of >>> knowns, the buitlins get saved when cp_save_built_in_decl_pre_parsing >>> in cp/cp-objcp-common.c is called much earlier. Hence, this builtin >>> which is created during primary module parsing is not available when >>> parsing the auxiliary module. >>> >>> A simple fix is to expose all target builtins unconditionally in LIPO >>> mode. Patch: >>> >>> >>> Index: config/i386/i386.c >>> =================================================================== >>> --- config/i386/i386.c (revision 201046) >>> +++ config/i386/i386.c (working copy) >>> @@ -26957,7 +26957,8 @@ def_builtin (HOST_WIDE_INT mask, const char *name, >>> ix86_builtins_isa[(int) code].isa = mask; >>> >>> mask &= ~OPTION_MASK_ISA_64BIT; >>> - if (mask == 0 >>> + if (flag_dyn_ipa >>> + || mask == 0 >>> || (mask & ix86_isa_flags) != 0 >>> || (lang_hooks.builtin_function >>> == lang_hooks.builtin_function_ext_scope)) >>> >>> >>> Is this ok? >>> >>> Thanks >>> Sri