Fix PR78556 - left shift of negative values

Running bootstrap-ubsan on ppc64le shows many instances of e.g.:
 config/rs6000/rs6000.c:6217:36: runtime error: left shift of negative value -12301

        PR target/78556
	* config/rs6000/rs6000.c (vspltis_constant): Add casts to avoid
	left shifting of negative values.

From-SVN: r242928
This commit is contained in:
Markus Trippelsdorf 2016-11-28 18:33:19 +00:00 committed by Markus Trippelsdorf
parent 80cf1b8b60
commit 82979abd86
2 changed files with 9 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2016-11-28 Markus Trippelsdorf <markus@trippelsdorf.de>
PR target/78556
* config/rs6000/rs6000.c (vspltis_constant): Add casts to avoid
left shifting of negative values.
2016-11-28 Jakub Jelinek <jakub@redhat.com>
PR fortran/78298

View File

@ -6214,7 +6214,9 @@ vspltis_constant (rtx op, unsigned step, unsigned copies)
bitsize /= 2;
small_val = splat_val >> bitsize;
mask >>= bitsize;
if (splat_val != ((small_val << bitsize) | (small_val & mask)))
if (splat_val != ((HOST_WIDE_INT)
((unsigned HOST_WIDE_INT) small_val << bitsize)
| (small_val & mask)))
return false;
splat_val = small_val;
}