This is the mail archive of the
mailing list for the GCC project.
Re: [RFA] [tree-optimization/80576] Handle non-constant sizes in DSE
On 8/21/19 4:47 PM, Jeff Law wrote:
On 8/19/19 7:57 AM, Richard Biener wrote:
+objsize_from_type (tree object)
+ if (TREE_CODE (object) != ADDR_EXPR)
+ return NULL_TREE;
+ tree type = TREE_TYPE (object);
+ if (POINTER_TYPE_P (type))
that if looks suspicious... I'd say
if (!POINTER_TYPE_P (type))
Sure. But we may not be able to use this anyway as you noted later,
depending on the type is not safe.
+ type = TREE_TYPE (type);
+ if (TREE_CODE (type) == ARRAY_TYPE && !array_at_struct_end_p (object))
array_at_struct_end_p will never return true here since you pass it
an ADDR_EXPR... you wanted to pass TREE_OPERAND (object, 0) here?
I think you're right. Given this was cribbed from the tail of another
function elsewhere, I suspect that other function has the same issue.
I suspect ultimately we want to fix that other copy and drop
Is the other copy compute_objsize in builtins.c? The function
has a comment that says it "is intended for diagnostics a should
not be used to influence code generation or optimization."
I added that comment on your request, not because the function
relies the type of objects but because it conservatively uses
the lower bound of ranges of offsets into arrays to determine
the minimum size.