On Mon, 2020-01-20 at 12:54 +0000, Richard Sandiford wrote:
> g:3bd2918594dae34ae84f mishandled the case in which only the
> tail end of a multireg hard register is invalidated by the call.
> Walking all the entries should be both safer and more precise.
> 
> Avoiding cselib_invalidate_regno also means that we no longer
> walk the same list multiple times (which is something we did
> before g:3bd2918594dae34ae84f too).
> 
> Tested on aarch64-linux-gnu and x86_64-linux-gnu.  OK to install?
> 
> Richard
> 
> 
> 2020-01-20  Richard Sandiford  <richard.sandif...@arm.com>
> 
> gcc/
>       PR rtl-optimization/93170
>       * cselib.c (cselib_invalidate_regno_val): New function, split out
>       from...
>       (cselib_invalidate_regno): ...here.
>       (cselib_invalidated_by_call_p): New function.
>       (cselib_process_insn): Iterate over all the hard-register entries in
>       REG_VALUES and invalidate any that cross call-clobbered registers.
> 
> gcc/testsuite/
>       * gcc.dg/torture/pr93170.c: New test.
OK
jeff
> 

Reply via email to