gcc.old: PR port-vax/57646 patch provided by Kalvis Duckmanton [5/21]

Shift right by positive values that are less than HOST_BITS_PER_WIDE_INT
to avoid illegal instruction exceptions on VAX.

XXXRO: Hidden within ``#ifdef NB_FIX_VAX_BACKEND'' and enabled only for
vax at the moment.
This commit is contained in:
rin 2023-10-07 11:58:54 +00:00
parent ae12d8de82
commit 7eb2d76c0c
1 changed files with 10 additions and 1 deletions

View File

@ -301,7 +301,12 @@ static unsigned HOST_WIDE_INT
lowpart_bitmask (int n)
{
unsigned HOST_WIDE_INT mask = HOST_WIDE_INT_M1U;
#if 1 // XXXMRG
#ifdef NB_FIX_VAX_BACKEND
if (n < 1)
return 0;
if (n >= HOST_BITS_PER_WIDE_INT)
return mask;
#else // XXXMRG
gcc_assert(n >= 0 && n <= HOST_BITS_PER_WIDE_INT);
if (n == 0)
return 0;
@ -1340,6 +1345,10 @@ all_positions_needed_p (store_info *s_info, poly_int64 start,
return false;
return true;
}
#ifdef NB_FIX_VAX_BACKEND
if (const_start >= HOST_BITS_PER_WIDE_INT || const_start < 0)
return true;
#endif
else
{
unsigned HOST_WIDE_INT mask