пт, 13 сент. 2024 г. в 20:41, Georg-Johann Lay <a...@gjlay.de>: > > 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. > > Ok for trunk?
Please, apply. Denis. > > Johann > > -- > 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". > > diff --git a/gcc/config/avr/avr.cc b/gcc/config/avr/avr.cc > index 48d1d0e7646..ef7e94dde2b 100644 > --- a/gcc/config/avr/avr.cc > +++ b/gcc/config/avr/avr.cc > @@ -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: