[pushed] i386: Fix unprotected REGNO in aeswidekl_operation

Message ID mptcyx4qqtz.fsf@arm.com
State Accepted
Headers
Series [pushed] i386: Fix unprotected REGNO in aeswidekl_operation |

Checks

Context Check Description
snail/gcc-patch-check success Github commit url

Commit Message

Richard Sandiford Oct. 24, 2023, 10:04 a.m. UTC
  I hit an ICE in aeswidekl_operation while testing the late-combine
pass on x86.  The predicate tested REGNO without first testing REG_P.

Tested on x86_64-linux-gnu & pushed as obvious.

Richard


gcc/
	* config/i386/predicates.md (aeswidekl_operation): Protect
	REGNO check with REG_P.
---
 gcc/config/i386/predicates.md | 1 +
 1 file changed, 1 insertion(+)
  

Patch

diff --git a/gcc/config/i386/predicates.md b/gcc/config/i386/predicates.md
index ef49efdbde5..e3d55f0c502 100644
--- a/gcc/config/i386/predicates.md
+++ b/gcc/config/i386/predicates.md
@@ -2260,6 +2260,7 @@  (define_predicate "aeswidekl_operation"
 	  || GET_CODE (SET_SRC (elt)) != UNSPEC_VOLATILE
 	  || GET_MODE (SET_SRC (elt)) != V2DImode
 	  || XVECLEN (SET_SRC (elt), 0) != 1
+	  || !REG_P (XVECEXP (SET_SRC (elt), 0, 0))
 	  || REGNO (XVECEXP (SET_SRC (elt), 0, 0)) != GET_SSE_REGNO (i))
 	return false;
     }