https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68853
--- Comment #7 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- The while loop in: 421 void IncrementalMarking::ActivateIncrementalWriteBarrier() { 422 ActivateIncrementalWriteBarrier(heap_->old_space()); 423 ActivateIncrementalWriteBarrier(heap_->map_space()); 424 ActivateIncrementalWriteBarrier(heap_->code_space()); 425 ActivateIncrementalWriteBarrier(heap_->new_space()); 426 427 LargePage* lop = heap_->lo_space()->first_page(); 428 while (lop->is_valid()) { 429 SetOldSpacePageFlags(lop, true, is_compacting_); 430 lop = lop->next_page(); 431 } 432 } Good: Bad: .p2align 4,,10 .p2align 4,,10 .p2align 3 .p2align 3 .L2183: .L2176: orq $12, 8(%rax) orq $12, 8(%rax) movq 176(%rax), %rax movq 176(%rax), %rax testq %rax, %rax jmp .L2176 jne .L2183 rep ret .L2192: rep ret