https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119312

--- Comment #9 from Bruno Haible <bruno at clisp dot org> ---
> But the callee is still allowed to assign the whole struct through the 
> non-const pointer.

Oh, I see. Yes,

void
foo (struct S *s)
{
  s[-1] = s[0];
}

would disable the optimization.

Yeah, then it needs IPA.

> in your testcase we'd need to know that strcmp doesn't escape the address 
> (maybe we know that already, haven't checked).

We need only to see that the compilation unit only ever accesses html5[i].name
and html5[i].value but never html5[i] as an entire struct. I don't think any
knowledge about strcmp is needed.

Reply via email to