mirror of
https://github.com/gcc-mirror/gcc.git
synced 2024-11-21 13:40:47 +00:00
AVR: Detect more skip opportunities.
The transparent call insns like "*parityhi2.libgcc" output a single [R]CALL instruction that can be skipped by the skip instructions. Such insns have attribute "type" of "xcall" and can therefore be easily recognized. Same applies when "adjust_len" is "call". gcc/ * config/avr/avr.cc (avr_2word_insn_p): Return true for transparent calls: When insn attribute "type" is "xcall" or when "adjust_len" is "call".
This commit is contained in:
parent
8ed8c342fb
commit
4ffca9966a
@ -12972,7 +12972,7 @@ test_hard_reg_class (enum reg_class rclass, rtx x)
|
||||
}
|
||||
|
||||
|
||||
/* Helper for jump_over_one_insn_p: Test if INSN is a 2-word instruction
|
||||
/* Helper for `jump_over_one_insn_p': Test if INSN is a 2-word instruction
|
||||
and thus is suitable to be skipped by CPSE, SBRC, etc. */
|
||||
|
||||
static bool
|
||||
@ -12986,7 +12986,10 @@ avr_2word_insn_p (rtx_insn *insn)
|
||||
switch (INSN_CODE (insn))
|
||||
{
|
||||
default:
|
||||
return false;
|
||||
return (recog_memoized (insn) >= 0
|
||||
// Transparent calls may be skipped.
|
||||
&& (get_attr_type (insn) == TYPE_XCALL
|
||||
|| get_attr_adjust_len (insn) == ADJUST_LEN_CALL));
|
||||
|
||||
case CODE_FOR_movqi_insn:
|
||||
case CODE_FOR_movuqq_insn:
|
||||
|
Loading…
Reference in New Issue
Block a user