The following makes sure that using TYPE_PRECISION on VECTOR_TYPE ICEs when tree checking is enabled. This should avoid wrong-code in cases like PR110182 and instead ICE.
Bootstrap and regtest pending on x86_64-unknown-linux-gnu, I guess there will be some fallout of such change ... * tree.h (TYPE_PRECISION): Check for non-VECTOR_TYPE. --- gcc/tree.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/tree.h b/gcc/tree.h index 1854fe4a7d4..9c525d14474 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -2191,7 +2191,8 @@ class auto_suppress_location_wrappers #define TYPE_SIZE_UNIT(NODE) (TYPE_CHECK (NODE)->type_common.size_unit) #define TYPE_POINTER_TO(NODE) (TYPE_CHECK (NODE)->type_common.pointer_to) #define TYPE_REFERENCE_TO(NODE) (TYPE_CHECK (NODE)->type_common.reference_to) -#define TYPE_PRECISION(NODE) (TYPE_CHECK (NODE)->type_common.precision) +#define TYPE_PRECISION(NODE) \ + (TREE_NOT_CHECK (TYPE_CHECK (NODE), VECTOR_TYPE)->type_common.precision) #define TYPE_NAME(NODE) (TYPE_CHECK (NODE)->type_common.name) #define TYPE_NEXT_VARIANT(NODE) (TYPE_CHECK (NODE)->type_common.next_variant) #define TYPE_MAIN_VARIANT(NODE) (TYPE_CHECK (NODE)->type_common.main_variant) -- 2.35.3