diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2019-09-30 16:20:15 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2019-09-30 16:20:15 +0000 |
commit | 43b484fbf281553353c6ef55ff0871b222579004 (patch) | |
tree | 09be312850766d7bb5f4c6dfa86e810708db069f | |
parent | 016996861c7333f42772c84a5a2a4e52e0bd07c5 (diff) | |
download | gcc-43b484fbf281553353c6ef55ff0871b222579004.zip gcc-43b484fbf281553353c6ef55ff0871b222579004.tar.gz gcc-43b484fbf281553353c6ef55ff0871b222579004.tar.bz2 |
Remove global call sets: cfgloopanal.c
...or rather, make the use of the default ABI explicit. That seems
OK if not ideal for this heuristic.
In practical terms, the code patched here is counting GENERAL_REGS,
which are treated in the same way by all concurrent ABI variants
on AArch64. It might give bad results if used for interrupt
handlers though.
2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* cfgloopanal.c: Include regs.h and function-abi.h.
(init_set_costs): Use default_function_abi to test whether
a general register is call-clobbered.
From-SVN: r276315
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cfgloopanal.c | 7 |
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a3e4ff2..6b08d70 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2019-09-30 Richard Sandiford <richard.sandiford@arm.com> + * cfgloopanal.c: Include regs.h and function-abi.h. + (init_set_costs): Use default_function_abi to test whether + a general register is call-clobbered. + +2019-09-30 Richard Sandiford <richard.sandiford@arm.com> + * cfgcleanup.c (old_insns_match_p): Compare the ABIs of calls instead of the call-clobbered sets. diff --git a/gcc/cfgloopanal.c b/gcc/cfgloopanal.c index 0ebecc3..95ec929 100644 --- a/gcc/cfgloopanal.c +++ b/gcc/cfgloopanal.c @@ -32,6 +32,8 @@ along with GCC; see the file COPYING3. If not see #include "graphds.h" #include "params.h" #include "sreal.h" +#include "regs.h" +#include "function-abi.h" struct target_cfgloop default_target_cfgloop; #if SWITCHABLE_TARGET @@ -353,7 +355,10 @@ init_set_costs (void) && !fixed_regs[i]) { target_avail_regs++; - if (call_used_or_fixed_reg_p (i)) + /* ??? This is only a rough heuristic. It doesn't cope well + with alternative ABIs, but that's an optimization rather than + correctness issue. */ + if (default_function_abi.clobbers_full_reg_p (i)) target_clobbered_regs++; } |