re PR target/79027 (fold-const.c:11104:1: internal compiler error: Floating point exception)

PR target/79027
	* config/pa/pa.c (pa_cannot_change_mode_class): Reject changes to/from
	modes with zero size.  Enhance comment.

From-SVN: r247869
This commit is contained in:
John David Anglin 2017-05-10 22:54:07 +00:00
parent 3aa0a770a4
commit 212b7e9cf3
2 changed files with 18 additions and 8 deletions

View File

@ -1,3 +1,9 @@
2017-05-10 John David Anglin <danglin@gcc.gnu.org>
PR target/79027
* config/pa/pa.c (pa_cannot_change_mode_class): Reject changes to/from
modes with zero size. Enhance comment.
2017-05-10 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/rs6000.c (altivec_init_builtins): Define POWER8

View File

@ -9962,19 +9962,23 @@ pa_cannot_change_mode_class (machine_mode from, machine_mode to,
if (from == to)
return false;
if (GET_MODE_SIZE (from) == GET_MODE_SIZE (to))
return false;
/* Reject changes to/from modes with zero size. */
if (!GET_MODE_SIZE (from) || !GET_MODE_SIZE (to))
return true;
/* Reject changes to/from complex and vector modes. */
if (COMPLEX_MODE_P (from) || VECTOR_MODE_P (from)
|| COMPLEX_MODE_P (to) || VECTOR_MODE_P (to))
return true;
if (GET_MODE_SIZE (from) == GET_MODE_SIZE (to))
return false;
/* There is no way to load QImode or HImode values directly from
memory. SImode loads to the FP registers are not zero extended.
On the 64-bit target, this conflicts with the definition of
LOAD_EXTEND_OP. Thus, we can't allow changing between modes
with different sizes in the floating-point registers. */
/* There is no way to load QImode or HImode values directly from memory
to a FP register. SImode loads to the FP registers are not zero
extended. On the 64-bit target, this conflicts with the definition
of LOAD_EXTEND_OP. Thus, we can't allow changing between modes with
different sizes in the floating-point registers. */
if (MAYBE_FP_REG_CLASS_P (rclass))
return true;