https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111466

--- Comment #2 from Vineet Gupta <vineetg at gcc dot gnu.org> ---
(In reply to Vineet Gupta from comment #1)

> #1. REE reports failure as "missing definition(s)".
> 
> This is because function args don't have an explicit def, they are just
> there.
> 
> Cannot eliminate extension:
> (insn 12 6 13 2 (set (reg:DI 16 a6 [orig:138 n.1_15 ] [138])
>         (sign_extend:DI (reg:SI 11 a1 [orig:141 n ] [141])))  {extendsidi2}
>      (nil))
>  because of missing definition(s)

For addressing missing definition(s) there are a couple of approaches:

#1a. Try to use Ajit Agarwal's REE updates [1] which is supposed to uses
defined ABI interfaces and identify incoming args or return values. 
  - however even the latest v8 series doesn't properly address the review
comments - it hard codes the {ZERO,SIGN}_EXTEND in REE w/o actually querying
the ABI
  - requires both src and dest hard regs be the same which is often not the
case. 
  - But we can certainly use some concepts from this patch.


#1b. To Jeff suggested [2][3] inserting dummy sign_extend in REE for the
function args, which could be eliminated by REE.

[1] https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630935.html
[2] https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630899.html
[3] https://gcc.gnu.org/pipermail/gcc-patches/2023-September/631543.html

Reply via email to