Hi gcc-help, I am trying to figure out how gcc can set loop buffer size in the aarch64 backend. Could someone kindly give some hint or point me to the relevant code where this is being set. I have collected following information from code browsing. To my understanding, Loop Buffer is like i-cache which contain pre-decoded instruction which can be re-used if branch instruction loopbacks to an instruction still present in the buffer. In some architecture, decoder queue may also acts as loop buffer. In config/aarch64.c, I found align_loops variable in aarch64_override_options_after_change() function. In config/i386/i386.c, TARGET_LOOP_UNROLL_ADJUST is set to ix86_loop_unroll_adjust (unsigned nunroll, struct loop *loop) function. >From comments – “This function decides the unroll factor using number of memory references (value 32 is used) as a heuristic”. However, it seems above is not exactly loop buffer size. align_loops set the alignment at the start of a loop & TARGET_LOOP_UNROLL_ADJUST update the loop unrolling factors. So any guidance on how can I set the loop buffer size? Thanks in advance for your time. -- with regards, Virendra Kumar Pathak