This reverts one change from
106970adca69c9c577e6c75f4e69a08cd9ea2df0
that replaced build_range_type with build_index_type. In the function
complete_array_type this breaks zero-sized arrays created from an empty
initializer which there are represented using the C++ FE way [0, -1]
causing issues on 32 bit architectures.
After this partial revert this representation remains inconsistent to
the usual C FE representation [0, NULL_TREE] (as before by change).
PR c/125618
gcc/c-family/ChangeLog:
* c-common.cc (complete_array_type): Change back to using
build_range_type.
TYPE_LANG_FLAG_? bits that the front end may have set. */
main_type = build_distinct_type_copy (TYPE_MAIN_VARIANT (type));
TREE_TYPE (main_type) = unqual_elt;
- TYPE_DOMAIN (main_type) = build_index_type (maxindex);
+ TYPE_DOMAIN (main_type)
+ = build_range_type (TREE_TYPE (maxindex),
+ build_int_cst (TREE_TYPE (maxindex), 0), maxindex);
TYPE_TYPELESS_STORAGE (main_type) = TYPE_TYPELESS_STORAGE (type);
layout_type (main_type);