<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jun 18, 2021 at 9:40 AM Richard Kenner <<a href="mailto:kenner@adacore.com">kenner@adacore.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">> Are there any studies or examples of TBAA optimization for C showing<br>
> substantive performance wins? I have not been able to find any<br>
> papers or even compelling examples.<br>
<br>
Consider:<br>
<br>
void<br>
square (float *arr, int *bound)<br>
{<br>
  int i;<br>
<br>
  for (i = 0; i <= *bound; i++)<br>
    arr[i] = arr[i] * arr[i];<br>
}<br>
<br>
without TBAA you can't hoist the reference to *bound out of the loop.  That<br>
will prevent almost all loop optimizations.<br></blockquote><div><br></div><div><br></div><div>The programmer can get this with a simple change, no?</div><div><br></div><div> void</div>
square (float *arr, int *bound)<br>
{<br>
  int i;</div><div class="gmail_quote">  const int b = *bound;<br>
<br>
  for (i = 0; i <= b ; i++)<br>
    arr[i] = arr[i] * arr[i];<br>
}<br></div><div class="gmail_quote"><br></div></div>