ok for google branch. Dehao
On Tue, Mar 3, 2015 at 12:26 PM, Cary Coutant <ccout...@google.com> wrote: >>> @@ -21817,22 +21823,39 @@ out_subprog_directive (subprog_entry *su >>> { >>> tree decl = subprog->decl; >>> tree decl_name = DECL_NAME (decl); >>> - const char *name; >>> + tree origin; >> >> Explicitly initialize origin to NULL_TREE; > > Done. > >>> + /* For inlined subroutines, use the linkage name. >>> + If -ftwo-level-all-subprogs is set, use the linkage name >>> + for all subroutines. */ >>> + if (subprog->is_inlined || flag_two_level_all_subprogs) >>> { >>> - name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)); >>> - if (name[0] == '*') >>> - name++; >>> + if (DECL_ASSEMBLER_NAME (origin)) >>> + { >>> + name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (origin)); >>> + if (name[0] == '*') >>> + name++; >>> + } >>> + else >>> + name = dwarf2_name (origin, 0); >>> } >>> else >>> - name = dwarf2_name (decl, 0); >>> + { >>> + /* To save space, we don't emit the name for non-inlined >>> + subroutines, whose linkage names are available from the >>> + object file's symbol table. */ >> >> flag_two_level_all_subprogs will be 1 by default. This mean "else" >> branch is not the default behavior? > > No, I changed the default in common.opt: > > ftwo-level-all-subprogs > -Common Report Var(flag_two_level_all_subprogs) Init(1) > +Common Report Var(flag_two_level_all_subprogs) Init(0) > When generating two-level line tables in DWARF (experimental), > -generate subprogram table entries for all functions. > +add linkage names for all functions (not just inlined functions). > > -cary