ira: Fix unnecessary register spill
authorOmar Tahir <omar.tahir@arm.com>
Thu, 9 Jul 2020 09:14:19 +0000 (10:14 +0100)
committerRichard Sandiford <richard.sandiford@arm.com>
Thu, 9 Jul 2020 09:14:19 +0000 (10:14 +0100)
commitedf95e51e53697f3050f076675c26a4cece17741
tree5197c9858a0ea13331a4b0d246500dc7a2bc0975
parent319078dad62eba942d33c8975bdcbb09d1c68ba6
ira: Fix unnecessary register spill

The variables first_moveable_pseudo and last_moveable_pseudo aren't
reset after compiling a function, which means they leak into the first
scheduler pass of the following function. In some cases, this can cause
an extra spill during register allocation of the second function.

gcc/ChangeLog:

* ira.c (move_unallocated_pseudos): Zero first_moveable_pseudo and
last_moveable_pseudo before returning.

gcc/testsuite/ChangeLog:

* gcc.target/aarch64/nospill.c: New test.
gcc/ira.c
gcc/testsuite/gcc.target/aarch64/nospill.c [new file with mode: 0644]