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

--- Comment #8 from Bernd Edlinger <bernd.edlinger at hotmail dot de> ---
> expmed.c.214r.reload:
> 
> ;; Function long unsigned int choose_multiplier(long unsigned int, int, int,
> long unsigned int*, int*, int*) (_Z17choose_multipliermiiPmPiS0_,
> funcdef_no=1085, decl_uid=47659, symbol_order=801)
> 
> ...
>   557: r13:DI=0x7ffffff78
>       REG_EQUIV 0x7ffffff78
> ...
>   547: debug this => debug_implicit_ptr
>   548: debug D#64 => debug_implicit_ptr
>   549: debug D#37 => D#64
>   550: debug this => D#37
>   551: debug len => optimized away
>   552: debug D#65 => debug_implicit_ptr
>   553: debug D#39 => D#65
>   554: debug this => D#39
>   555: debug high => [sp:DI+0x800000038]
>   556: debug res => 0
>   560: NOTE_INSN_DELETED
>  1334: NOTE_INSN_DELETED
>  1367: ax:DI=[sp:DI+r13:DI+0xc0]
> 

OK. This is actually not reachable.

Only if wi::divmod_internal would return 0, which it does not.
But in this case get_len() would return 0, and then
generic_wide_int <storage>::uhigh () const
{
  return this->get_val ()[this->get_len () - 1];
}
would access exactly SP+32GB.

So this is actually one more case, where it would be incorrect
and potentially dangerous for rtx_addr_can_trap_p_1 to return 0.

The crash in -fdump-rtl-all-slim is actually a different bug,
PR61461 which has most likely nothing to do with this issue.

Reply via email to