[Bug tree-optimization/123525] [16 Regression] ICE: verify_gimple failed: conversion of register to a different size in 'view_convert_expr' with -O -mavx512f since r16-6671
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jan 13 11:53:30 GMT 2026
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123525
--- Comment #11 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Robin Dapp <rdapp@gcc.gnu.org>:
https://gcc.gnu.org/g:939dd2324e0f1c7cac49d2635532f08762b67674
commit r16-6742-g939dd2324e0f1c7cac49d2635532f08762b67674
Author: Robin Dapp <rdapp@oss.qualcomm.com>
Date: Mon Jan 12 15:45:46 2026 +0100
forwprop: Fix type mismatch in vec constructor [PR123525].
This issue got raised after r16-6671 in which I removed checks for
number-of-element equality. In the splat case with conversion:
vector(16) int w;
vector(8) long int v;
_13 = BIT_FIELD_REF <w_12(D), 32, 160>;
_2 = (long int) _13;
_3 = (long int) _13;
...
_9 = (long int) _13;
_1 = {_2, _3, _4, _5, _6, _7, _8, _9};
right now we do
_16 = VEC_PERM_EXPR <w_12(D), w_12(D), { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5 }>;
_17 = VIEW_CONVERT_EXPR<vector(8) intD.6>(_16);
where the view convert is actually an optimized
_17 = BIT_FIELD_REF (_16, 512, 0);
512 is the size of the unconverted source but we should actually use the
converted source type. That's what this patch does.
PR tree-optimization/123525
gcc/ChangeLog:
* tree-ssa-forwprop.cc (simplify_vector_constructor): Use
converted source type for conversion bit field ref.
gcc/testsuite/ChangeLog:
* gcc.dg/vect/pr123525.c: New test.
* g++.dg/vect/pr123525-2.cc: New test.
More information about the Gcc-bugs
mailing list