mips: Avoid out-of-bounds access in mips_symbol_insns [PR98491]
authorXi Ruoyao <xry111@mengyan1223.wang>
Wed, 17 Feb 2021 11:57:13 +0000 (11:57 +0000)
committerRichard Sandiford <richard.sandiford@arm.com>
Wed, 17 Feb 2021 11:57:13 +0000 (11:57 +0000)
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.

gcc/config/mips/mips.c

index ebb04b7..8bd2d29 100644 (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
      operand.  */
-  if (MSA_SUPPORTED_MODE_P (mode))
+  if (mode != MAX_MACHINE_MODE && MSA_SUPPORTED_MODE_P (mode))
     return 0;
 
   return mips_symbol_insns_1 (type, mode) * (TARGET_MIPS16 ? 2 : 1);