mips: Avoid out-of-bounds access in mips_symbol_insns [PR98491]

An invalid use of MSA_SUPPORTED_MODE_P was causing an ICE on
mips64el with -mmsa.  The detailed analysis is posted on bugzilla.

gcc/ChangeLog:

2021-02-17  Xi Ruoyao  <xry111@mengyan1223.wang>

	PR target/98491
	* config/mips/mips.c (mips_symbol_insns): Do not use
	MSA_SUPPORTED_MODE_P if mode is MAX_MACHINE_MODE.
This commit is contained in:
Xi Ruoyao 2021-02-17 11:57:13 +00:00 committed by Richard Sandiford
parent 78a6d0e30d
commit 06505e701d

View File

@ -2381,7 +2381,7 @@ mips_symbol_insns (enum mips_symbol_type type, machine_mode mode)
{ {
/* MSA LD.* and ST.* cannot support loading symbols via an immediate /* MSA LD.* and ST.* cannot support loading symbols via an immediate
operand. */ operand. */
if (MSA_SUPPORTED_MODE_P (mode)) if (mode != MAX_MACHINE_MODE && MSA_SUPPORTED_MODE_P (mode))
return 0; return 0;
return mips_symbol_insns_1 (type, mode) * (TARGET_MIPS16 ? 2 : 1); return mips_symbol_insns_1 (type, mode) * (TARGET_MIPS16 ? 2 : 1);