[Bug ipa/105250] ICE: in fold_convert_loc, at fold-const.cc:2581 with conflicting function redeclaration
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Apr 13 06:46:45 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105250
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org
Blocks| |105140
Status|UNCONFIRMED |ASSIGNED
Ever confirmed|0 |1
Last reconfirmed| |2022-04-13
CC| |rsandifo at gcc dot gnu.org
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed. Now that fold_convertible_p doesn't ICE it's still inconsistent in
what fold_convert does. fold_convertible_p:
case VECTOR_TYPE:
return (VECTOR_TYPE_P (orig)
&& known_eq (TYPE_VECTOR_SUBPARTS (type),
TYPE_VECTOR_SUBPARTS (orig))
&& fold_convertible_p (TREE_TYPE (type), TREE_TYPE (orig)));
thus it allows promotion/demotion of elements, while fold_convert:
case VECTOR_TYPE:
if (integer_zerop (arg))
return build_zero_vector (type);
gcc_assert (tree_int_cst_equal (TYPE_SIZE (type), TYPE_SIZE (orig)));
gcc_assert (INTEGRAL_TYPE_P (orig) || POINTER_TYPE_P (orig)
|| TREE_CODE (orig) == VECTOR_TYPE);
return fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, arg);
IIRC Richard originally enhanced fold_convertible_p in r10-5112-gfddcfa5b84bf8a
but it seems that the check didn't really intend to allow the vector
conversions
now possible with NOP_EXPRs but were to prevent IPA-CP from generating invalid
conversions.
So I guess we should simply sync fold_convert and fold_convertible_p here.
Referenced Bugs:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105140
[Bug 105140] [10/11 Regression] ICE: SIGSEGV in fold_convertible_p with
conflicting function redeclaration since r10-5112-gfddcfa5b84bf8a06
More information about the Gcc-bugs
mailing list