[PATCH 06/10] tree-object-size: Support dynamic sizes in conditions

Siddhesh Poyarekar siddhesh@gotplt.org
Tue Nov 23 15:38:35 GMT 2021

On 11/23/21 21:06, Siddhesh Poyarekar wrote:
> On 11/23/21 20:42, Jakub Jelinek wrote:
>> On Wed, Nov 10, 2021 at 12:31:32AM +0530, Siddhesh Poyarekar wrote:
>>>     (object_sizes_execute): Don't insert min/max for dynamic sizes.
>> I'm worried about this.
>> I'd say what we might want to do is in the early pass for __bdos
>> compute actually __bos (i.e. the static one) and add MIN_EXPR/MAX_EXPR
>> for the result of the __bdos call from the second pass with the
>> statically computed value.
>> The reason for the MIN_EXPR/MAX_EXPR stuff is that GIMPLE optimizations
>> can remove exact ADDR_EXPRs with detailed COMPONENT_REF etc. access paths
>> in it, so during the late objsz2 pass the subobject modes don't work
>> reliably anymore.  But the subobject knowledge should be the same between
>> the static and dynamic evaluation...
> So in the dynamic case we almost always end up with the right expression 
> in objsz1, except in cases where late optimizations make available 
> information that wasn't available earlier.  How about putting in a 
> MIN_EXPR/MAX_EXPR if we *fail* to get the subobject size instead?

Actually if we don't get a dynamic expression it's unlikely that we'll 
get a static size either, so I'm not sure if MIN_EXPR/MAX_EXPR will 
actually do anything useful.


More information about the Gcc-patches mailing list