This is the mail archive of the gcc-bugs@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]

[Bug pch/53880] [4.8 Regression] compile time regression when generating precompiled headers for boost


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53880

--- Comment #24 from Markus Trippelsdorf <markus at trippelsdorf dot de> 2012-07-30 11:21:54 UTC ---
(In reply to comment #23)
> (In reply to comment #22)
> > Still a 98% compile time regression on todays trunk.
> 
> What revision number is this? If it includes r189951, could you please see if
> you can get an updated profile (similar to the one in comment #3)?

I'm running revision 189954.

# Samples: 557K of event 'cycles'
# Event count (approx.): 448107030198
#
# Overhead  Command  Shared Object          Symbol        
    97.54%  cc1plus  cc1plus            [.] gt_pch_p_9line_maps
     0.12%  cc1plus  cc1plus            [.] htab_find_slot_with_hash
     0.10%  cc1plus  libc-2.16.90.so    [.] memcpy@@GLIBC_2.14
     0.10%  cc1plus  cc1plus            [.] htab_expand
     0.09%  cc1plus  libc-2.16.90.so    [.] malloc_consolidate
     0.08%  cc1plus  cc1plus            [.] htab_find_with_hash
     0.08%  cc1plus  libc-2.16.90.so    [.] msort_with_tmp.part.0

Zoom into gt_pch_p_9line_maps:

       â         if ((*x).info_macro.maps != NULL) {
       â           size_t i2;
       â           for (i2 = 0; i2 != (size_t)(l2); i2++) {
  4.10 â109:   cmp    %rcx,%rbx
  3.86 â       nop
  3.22 â     â je     188
  3.26 â112:   mov    0x18(%rbp),%rax
  3.21 â       add    $0x1,%rbx
       â           break;
       â         }
       â     }
       â
       â     void
       â     gt_pch_p_9line_maps (ATTRIBUTE_UNUSED void *this_obj,
  2.94 â11a:   lea    (%rbx,%rbx,4),%r15
  3.69 â       shl    $0x3,%r15
       â       {
       â         size_t l2 = (size_t)(((*x).info_macro).used);
       â         if ((*x).info_macro.maps != NULL) {
       â           size_t i2;
       â           for (i2 = 0; i2 != (size_t)(l2); i2++) {
       â             switch (((*x).info_macro.maps[i2]).reason ==
LC_ENTER_MACRO)
  3.58 â       lea    (%rax,%r15,1),%rdi
  3.59 â       cmpb   $0x4,0x4(%rdi)
  4.26 â     â jne    100
       â                   op (&((*x).info_macro.maps[i2].d.ordinary.to_file),
cookie);
       â                 break;
       â               case 1:
       â                 {
       â                   union tree_node * x3 =
       â                     ((*x).info_macro.maps[i2].d.macro.macro) ?
HT_IDENT_TO_GCC_IDENT (HT_NODE (((*x).info_macro.maps[i2].d.macro.macro))) :
  4.18 â       mov    0x8(%rdi),%rsi
  4.07 â       xor    %edx,%edx
  2.28 â       lea    -0x18(%rsi),%r8
  2.28 â       test   %rsi,%rsi
  2.70 â       cmovne %r8,%rdx
       â                   if ((void *)((*x).info_macro.maps) == this_obj)
  2.69 â       cmp    %rax,%r14
       â                 if ((void *)((*x).info_macro.maps) == this_obj)
       â                   op (&((*x).info_macro.maps[i2].d.ordinary.to_file),
cookie);
       â                 break;
       â               case 1:
       â                 {
       â                   union tree_node * x3 =
  2.55 â       mov    %rdx,0x18(%rsp)
       â                     ((*x).info_macro.maps[i2].d.macro.macro) ?
HT_IDENT_TO_GCC_IDENT (HT_NODE (((*x).info_macro.maps[i2].d.macro.macro))) :
       â                   if ((void *)((*x).info_macro.maps) == this_obj)
  2.82 â     â je     1a0
       â                     op (&(x3), cookie);
       â                   (*x).info_macro.maps[i2].d.macro.macro = (x3) ?
CPP_HASHNODE (GCC_IDENT_TO_HT_IDENT ((x3))) : NULL;
  2.80 â147:   lea    0x18(%rdx),%rsi
  3.00 â       xor    %eax,%eax
  3.28 â       test   %rdx,%rdx
  3.11 â       cmovne %rsi,%rax
  3.15 â       mov    %rax,0x8(%rdi)
       â                 }
       â                 if ((*x).info_macro.maps[i2].d.macro.macro_locations
!= NULL) {
  4.51 â       mov    0x18(%rbp),%rax
  4.45 â       add    %rax,%r15
  4.94 â       cmpq   $0x0,0x18(%r15)
  3.74 â     â je     109
       â                   if ((void *)((*x).info_macro.maps) == this_obj)
  3.16 â       cmp    %rax,%r14
  3.03 â     â jne    109
       â                     op
(&((*x).info_macro.maps[i2].d.macro.macro_locations), cookie);
       â       mov    %rcx,0x8(%rsp)
  0.00 â       lea    0x18(%r15),%rdi
       â       mov    %r13,%rsi
       â     â callq  *%r12
  0.00 â       mov    0x8(%rsp),%rcx
       â       }


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