https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121358
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
This patch fixes this issue:
```
diff --git a/gcc/simplify-rtx.cc b/gcc/simplify-rtx.cc
index c723a07f06b..c5f49ff2645 100644
--- a/gcc/simplify-rtx.cc
+++ b/gcc/simplify-rtx.cc
@@ -8460,7 +8460,8 @@ simplify_context::simplify_gen_subreg (machine_mode
outermode, rtx op,
if (GET_CODE (op) == SUBREG
|| GET_CODE (op) == CONCAT
- || GET_MODE (op) == VOIDmode)
+ || GET_MODE (op) == VOIDmode
+ || GET_CODE (op) == CONST_VECTOR)
return NULL_RTX;
if (MODE_COMPOSITE_P (outermode)
```
CONCAT was added with r0-64327-g4f1da2e923a3e7
(https://gcc.gnu.org/pipermail/gcc-patches/2004-December/157277.html).
If the CONST_INT didn't simplify it would be rejected because of the VOIDmode
check. Note I think CONST_POLY_INT should also be rejected for the same reason
as CONST_VECTOR. I suspect you could get a CONST_POLY_INT here with respect to
float subreg but I could be wrong.