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

Reply via email to