https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65805
--- Comment #2 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- markus@x4 Release % g++ -S -fPIC -fvisibility=hidden -pthread -march=x86-64 -O2 -fno-exceptions -fno-rtti -std=gnu++11 -Wall -c file_util.ii -o ass_good markus@x4 Release % diff -u ass_good ass_bad --- ass_good 2015-04-19 12:49:09.198287280 +0200 +++ ass_bad 2015-04-19 12:49:20.571371228 +0200 @@ -1,7 +1,7 @@ -.LCOLDB52: +.LCOLDB51: .text -.LHOTB52: - .p2align 4,,-1 +.LHOTB51: + .p2align 4,,15 .globl _ZN10extensions9file_util13LoadExtensionERKN4base8FilePathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_8Manifest8LocationEiPSA_ .hidden _ZN10extensions9file_util13LoadExtensionERKN4base8FilePathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_8Manifest8LocationEiPSA_ .type _ZN10extensions9file_util13LoadExtensionERKN4base8FilePathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_8Manifest8LocationEiPSA_, @function @@ -21,43 +21,43 @@ pushq %r12 .cfi_def_cfa_offset 40 .cfi_offset 12, -40 - movq %rsi, %r12 + movq %rsi, %r13 pushq %rbp .cfi_def_cfa_offset 48 .cfi_offset 6, -48 pushq %rbx .cfi_def_cfa_offset 56 .cfi_offset 3, -56 - movq %rdi, %rbp + movq %rdi, %r12 movq %r9, %rdx - movq %r12, %rdi + movq %r13, %rdi movl %r8d, %r14d subq $56, %rsp .cfi_def_cfa_offset 112 movq _ZN10extensions17kManifestFilenameE@GOTPCREL(%rip), %rsi - movq %r9, %rbx + movq %r9, %rbp movl %ecx, 4(%rsp) call _ZN10extensions9file_util12LoadManifestERKN4base8FilePathEPKcPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE testq %rax, %rax - je .L614 - movq %rbx, %rdx + je .L622 + movq %rbp, %rdx movq %rax, %rsi - movq %r12, %rdi - movq %rax, %r13 + movq %r13, %rdi + movq %rax, %rbx call _ZN19extension_l10n_util17LocalizeExtensionERKN4base8FilePathEPNS0_15DictionaryValueEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@PLT testb %al, %al - jne .L615 -.L613: - movq $0, 0(%rbp) -.L609: - movq 0(%r13), %rax - movq %r13, %rdi - call *8(%rax) + jne .L623 +.L621: + movq $0, (%r12) .L603: + movq (%rbx), %rax + movq %rbx, %rdi + call *8(%rax) +.L597: addq $56, %rsp .cfi_remember_state .cfi_def_cfa_offset 56 - movq %rbp, %rax + movq %r12, %rax popq %rbx .cfi_def_cfa_offset 48 popq %rbp @@ -73,66 +73,85 @@ ret .p2align 4,,10 .p2align 3 -.L615: +.L623: .cfi_restore_state leaq 16(%rsp), %rax subq $8, %rsp .cfi_def_cfa_offset 120 - movq %r12, %rsi + movq %r13, %rsi movq %r15, %r9 movl %r14d, %r8d - movq %r13, %rcx + movq %rbx, %rcx movq %rax, 16(%rsp) - pushq %rbx + pushq %rbp .cfi_def_cfa_offset 128 movl 20(%rsp), %edx - movq 24(%rsp), %rdi + leaq 64(%rsp), %rdi call _ZN10extensions9Extension6CreateERKN4base8FilePathENS_8Manifest8LocationERKNS1_15DictionaryValueEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSF_@PLT - movq 32(%rsp), %r12 + movq 32(%rsp), %r13 popq %rax .cfi_def_cfa_offset 120 popq %rdx .cfi_def_cfa_offset 112 - testq %r12, %r12 - je .L613 + testq %r13, %r13 + je .L621 movq 8(%rsp), %rdx - movq %rbx, %rsi - movq %r12, %rdi + movq %rbp, %rsi + movq %r13, %rdi movq $0, 16(%rsp) movq $0, 24(%rsp) movq $0, 32(%rsp) call _ZN10extensions9file_util17ValidateExtensionEPKNS_9ExtensionEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt6vectorINS_14InstallWarningESaISC_EE testb %al, %al - jne .L610 - movq 8(%rsp), %rdi - movq $0, 0(%rbp) - call _ZNSt6vectorIN10extensions14InstallWarningESaIS1_EED1Ev - leaq 8(%r12), %rdi + jne .L604 + movq $0, (%r12) +.L605: + movq 24(%rsp), %r14 + movq 16(%rsp), %rbp + cmpq %rbp, %r14 + je .L606 + .p2align 4,,10 + .p2align 3 +.L607: + movq %rbp, %rdi + addq $96, %rbp + call _ZN10extensions14InstallWarningD1Ev@PLT + cmpq %rbp, %r14 + jne .L607 + movq 16(%rsp), %r14 +.L606: + testq %r14, %r14 + je .L608 + movq %r14, %rdi + call _ZdlPv@PLT +.L608: + testq %r13, %r13 + je .L603 + leaq 8(%r13), %rdi call _ZNK4base6subtle24RefCountedThreadSafeBase7ReleaseEv@PLT testb %al, %al - je .L609 - movq (%r12), %rax - movq %r12, %rdi + je .L603 + movq 0(%r13), %rax + movq %r13, %rdi call *8(%rax) - jmp .L609 + jmp .L603 .p2align 4,,10 .p2align 3 -.L614: - movq $0, 0(%rbp) - jmp .L603 +.L622: + movq $0, (%r12) + jmp .L597 .p2align 4,,10 .p2align 3 -.L610: +.L604: movq 8(%rsp), %rsi - movq %r12, %rdi + movq %r13, %rdi call _ZN10extensions9Extension18AddInstallWarningsERKSt6vectorINS_14InstallWarningESaIS2_EE@PLT - movq 8(%rsp), %rdi - movq %r12, 0(%rbp) - call _ZNSt6vectorIN10extensions14InstallWarningESaIS1_EED1Ev - jmp .L609 + movq %r13, (%r12) + xorl %r13d, %r13d + jmp .L605 .cfi_endproc .LFE11121: .size _ZN10extensions9file_util13LoadExtensionERKN4base8FilePathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_8Manifest8LocationEiPSA_, .-_ZN10extensions9file_util13LoadExtensionERKN4base8FilePathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_8Manifest8LocationEiPSA_ .section .text.unlikely -.LCOLDE52: +.LCOLDE51: .text