diff options
author | Bernd Schmidt <bernds@cygnus.co.uk> | 1999-10-13 06:47:15 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1999-10-13 00:47:15 -0600 |
commit | 57850c857cf3384f2585b871bbfa7f23781b1bb7 (patch) | |
tree | e2459871cf7171c9ac8f168a2354f9622a79ba00 /gcc/reload1.c | |
parent | c7847bc8f5efacafe1dc82fc68ebd39324bf478b (diff) | |
download | gcc-57850c857cf3384f2585b871bbfa7f23781b1bb7.zip gcc-57850c857cf3384f2585b871bbfa7f23781b1bb7.tar.gz gcc-57850c857cf3384f2585b871bbfa7f23781b1bb7.tar.bz2 |
reload1.c (reload_reg_free_for_value_p): RELOAD_OTHER reloads with an earlyclobbered output conflict with RELOAD_INPUT...
* reload1.c (reload_reg_free_for_value_p): RELOAD_OTHER reloads with
an earlyclobbered output conflict with RELOAD_INPUT reloads.
From-SVN: r29935
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r-- | gcc/reload1.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c index caa7c10..8727770 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -5258,7 +5258,7 @@ reload_reg_free_for_value_p (regno, opnum, type, value, out, reloadnum, if (! rld[i].in || ! rtx_equal_p (rld[i].in, value) || rld[i].out || out) { - int time2; + int j, time2; switch (rld[i].when_needed) { case RELOAD_FOR_OTHER_ADDRESS: @@ -5337,6 +5337,11 @@ reload_reg_free_for_value_p (regno, opnum, type, value, out, reloadnum, if (! rld[i].in || rtx_equal_p (rld[i].in, value)) { time2 = MAX_RECOG_OPERANDS * 4 + 4; + /* Earlyclobbered outputs must conflict with inputs. */ + for (j = 0; j < n_earlyclobbers; j++) + if (reload_out[i] == reload_earlyclobbers[j]) + time2 = MAX_RECOG_OPERANDS * 4 + 3; + break; } time2 = 1; |