https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111040
--- Comment #3 from qinzhao at gcc dot gnu.org --- a summary of the discussion: We have two different sources to get the size information for subobjects: A. The TYPE information of the subobject in the IR; B. The initialization information propagated through data flow. In the early pass, only A is available. B might be available in the second pass. If both A and B are available, we should choose the minimum one between these two for both OST_MINIMUM and OST_MAXIMUM. However, in the current early object size phase, we have the following: enum tree_code code = object_size_type & OST_MINIMUM ? MAX_EXPR : MIN_EXPR; I.e, we chose the MAX one between A and B for OST_MIN.