From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26670 invoked by alias); 8 Jul 2012 07:08:33 -0000 Received: (qmail 26630 invoked by uid 22791); 8 Jul 2012 07:08:30 -0000 X-SWARE-Spam-Status: No, hits=-4.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00,KHOP_THREADED,TW_CP X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 08 Jul 2012 07:08:15 +0000 From: "markus at trippelsdorf dot de" To: gcc-bugs@gcc.gnu.org Subject: [Bug pch/53880] [4.8 Regression] compile time regression when generating precompiled headers for boost Date: Sun, 08 Jul 2012 07:08:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: pch X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: markus at trippelsdorf dot de X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2012-07/txt/msg00685.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D53880 --- Comment #3 from Markus Trippelsdorf 201= 2-07-08 07:08:13 UTC --- Unfortunately jimis' patch from Bug 53525 doesn't help much: c++ -c -o pch.hpp.gch /usr/include/boost/math/special_functions.hpp 156.69s user 0.33s system 99% cpu 2:37.50 total =46rom "perf top": 99.78% cc1plus [.] gt_pch_p_9line_maps 0.04% cc1plus [.] htab_find_with_hash 0.02% cc1plus [.] gt_pch_p_14lang_tree_node 0.02% libc-2.16.so [.] fwrite_unlocked =E2=96=92 0.01% libc-2.16.so [.] __mempcpy 0.01% [kernel] [k] do_timer=20 Zoom into gt_pch_p_9line_maps: =E2=94=82 size_t l3 =3D (size_t)(((*x).info_macro).used); =E2=94=82 if ((*x).info_macro.maps !=3D NULL) { =E2=94=82 size_t i3; =E2=94=82 for (i3 =3D 0; i3 !=3D (size_t)(l3); i3++) { 3.89 =E2=94=82109: cmp %rcx,%rbx 3.69 =E2=94=82 nop 3.15 =E2=94=82 =E2=86=93 je 188 3.11 =E2=94=82112: mov 0x18(%rbp),%rax 3.04 =E2=94=82 add $0x1,%rbx =E2=94=82 break; =E2=94=82 } =E2=94=82 } =E2=94=82 =E2=94=82 void =E2=94=82 gt_pch_p_9line_maps (ATTRIBUTE_UNUSED void *this_obj, 2.76 =E2=94=8211a: lea (%rbx,%rbx,4),%r15 3.53 =E2=94=82 shl $0x3,%r15 =E2=94=82 { =E2=94=82 size_t l3 =3D (size_t)(((*x).info_macro).used); =E2=94=82 if ((*x).info_macro.maps !=3D NULL) { =E2=94=82 size_t i3; =E2=94=82 for (i3 =3D 0; i3 !=3D (size_t)(l3); i3++) { =E2=94=82 switch (((*x).info_macro.maps[i3]).reason =3D= =3D LC_ENTER_MACRO) 3.46 =E2=94=82 lea (%rax,%r15,1),%rdi 3.42 =E2=94=82 cmpb $0x4,0x4(%rdi) 4.40 =E2=94=82 =E2=86=91 jne 100 =E2=94=82 case 1: =E2=94=82 { =E2=94=82 size_t l4 =3D (size_t)(2 * ((*x).info_macro.maps[i3].d.macro).n_tokens); =E2=94=82 { =E2=94=82 union tree_node * x5 =3D =E2=94=82 ((*x).info_macro.maps[i3].d.macro.ma= cro) ? HT_IDENT_TO_GCC_IDENT (HT_NODE (((*x).info_macro.maps[i3].d.macro.macro))) 4.38 =E2=94=82 mov 0x8(%rdi),%rsi 4.25 =E2=94=82 xor %edx,%edx 2.22 =E2=94=82 lea -0x18(%rsi),%r8 2.16 =E2=94=82 test %rsi,%rsi 2.68 =E2=94=82 cmovne %r8,%rdx =E2=94=82 if ((void *)((*x).info_macro.maps) =3D= =3D this_obj) 2.72 =E2=94=82 cmp %rax,%r14 =E2=94=82 break; =E2=94=82 case 1: =E2=94=82 { =E2=94=82 size_t l4 =3D (size_t)(2 * ((*x).info_macro.maps[i3].d.macro).n_tokens); =E2=94=82 { =E2=94=82 union tree_node * x5 =3D 2.62 =E2=94=82 mov %rdx,0x18(%rsp) =E2=94=82 ((*x).info_macro.maps[i3].d.macro.ma= cro) ? HT_IDENT_TO_GCC_IDENT (HT_NODE (((*x).info_macro.maps[i3].d.macro.macro))) =E2=94=82 if ((void *)((*x).info_macro.maps) =3D= =3D this_obj) 2.68 =E2=94=82 =E2=86=93 je 1a0 =E2=94=82 op (&(x5), cookie); =E2=94=82 (*x).info_macro.maps[i3].d.macro.macro= =3D (x5) ? CPP_HASHNODE (GCC_IDENT_TO_HT_IDENT ((x5))) : NULL; 2.68 =E2=94=82147: lea 0x18(%rdx),%rsi 2.85 =E2=94=82 xor %eax,%eax 3.39 =E2=94=82 test %rdx,%rdx 3.11 =E2=94=82 cmovne %rsi,%rax 3.23 =E2=94=82 mov %rax,0x8(%rdi) =E2=94=82 } =E2=94=82 if ((*x).info_macro.maps[i3].d.macro.mac= ro_locations !=3D NULL) { 5.10 =E2=94=82 mov 0x18(%rbp),%rax 4.93 =E2=94=82 add %rax,%r15 5.48 =E2=94=82 cmpq $0x0,0x18(%r15) 3.57 =E2=94=82 =E2=86=91 je 109 =E2=94=82 size_t i4; =E2=94=82 for (i4 =3D 0; i4 !=3D (size_t)(l4); i= 4++) { =E2=94=82 } =E2=94=82 if ((void *)((*x).info_macro.maps) =3D= =3D this_obj) 3.20 =E2=94=82 cmp %rax,%r14 2.82 =E2=94=82 =E2=86=91 jne 109 =E2=94=82 op (&((*x).info_macro.maps[i3].d.macro.macro_locations), cookie); =E2=94=82 mov %rcx,0x8(%rsp) =E2=94=82 lea 0x18(%r15),%rdi =E2=94=82 mov %r13,%rsi =E2=94=82 =E2=86=92 callq *%r12 =E2=94=82 mov 0x8(%rsp),%rcx =E2=94=82 }