
<html>
<title>or.c</title>
<meta charset="utf-8" />
<head>
<link rel='stylesheet' type='text/css' href='style.css'>
<script type="text/javascript">
/* Simple helper to show/hide the expanded message of a remark. */
function toggleExpandedMessage(e) {
  var FullTextElems = e.parentElement.parentElement.getElementsByClassName("full-info");
  if (!FullTextElems || FullTextElems.length < 1) {
      return false;
  }
  var FullText = FullTextElems[0];
  if (FullText.style.display == 'none') {
    e.innerHTML = '-';
    FullText.style.display = 'block';
  } else {
    e.innerHTML = '+';
    FullText.style.display = 'none';
  }
}
</script>
</head>
<body>
<div class="centered">
<table class="source">
<thead>
<tr>
<th style="width: 2%">Line</td>
<th style="width: 3%">Hotness</td>
<th style="width: 10%">Optimization</td>
<th style="width: 70%">Source</td>
<th style="width: 15%">Inline Context</td>
</tr>
</thead>
<tbody>

<tr>
<td><a name="L1">1</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre>void bar();</pre></div></td>
</tr>

<tr>
<td><a name="L2">2</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre>void foo() { bar(); }</pre></div></td>
</tr>

<tr>
<td></td>
<td></td>
<td class="column-entry-red">inline</td>
<td><pre style="display:inline">             </pre><span class="column-entry-yellow"> bar will not be inlined into foo because its definition is unavailable&nbsp;</span></td>
<td class="column-entry-yellow">foo</td>
</tr>

<tr>
<td><a name="L3">3</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre></pre></div></td>
</tr>

<tr>
<td><a name="L4">4</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre>#include "or.h"</pre></div></td>
</tr>

<tr>
<td><a name="L5">5</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre></pre></div></td>
</tr>

<tr>
<td><a name="L6">6</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre>void Test(int *res, int *c, int *d, int *p, int n) {</pre></div></td>
</tr>

<tr>
<td><a name="L7">7</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre>  int i;</pre></div></td>
</tr>

<tr>
<td><a name="L8">8</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre></pre></div></td>
</tr>

<tr>
<td><a name="L9">9</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre>#pragma clang loop vectorize(assume_safety)</pre></div></td>
</tr>

<tr>
<td><a name="L10">10</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre>  for (i = 0; i < 1600; i++) {</pre></div></td>
</tr>

<tr>
<td></td>
<td></td>
<td class="column-entry-green">loop-vectorize</td>
<td><pre style="display:inline">  </pre><span class="column-entry-yellow"> vectorized loop (vectorization width: 4, interleaved count: 2)&nbsp;</span></td>
<td class="column-entry-yellow">Test</td>
</tr>

<tr>
<td></td>
<td></td>
<td class="column-entry-green">multiline</td>
<td><pre style="display:inline">  </pre><span class="column-entry-yellow"><a style="text-decoration: none;" href="" onclick="toggleExpandedMessage(this); return false;">+</a> This is a remark with&nbsp;</span>
<div class="full-info" style="display:none;">
  <div class="col-left"><pre style="display:inline">  </pre></div>
  <div class="expanded col-left"><pre>multiple
  lines
</pre></div>
</div></td>
<td class="column-entry-yellow">Test</td>
</tr>

<tr>
<td><a name="L11">11</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre>    res[i] = (p[i] == 0) ? res[i] : res[i] + d[i];</pre></div></td>
</tr>

<tr>
<td><a name="L12">12</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre>  }</pre></div></td>
</tr>

<tr>
<td><a name="L13">13</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre></pre></div></td>
</tr>

<tr>
<td><a name="L14">14</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre>  for (i = 0; i < 16; i++) {</pre></div></td>
</tr>

<tr>
<td></td>
<td></td>
<td class="column-entry-green">loop-unroll</td>
<td><pre style="display:inline">  </pre><span class="column-entry-yellow"> completely unrolled loop with 16 iterations&nbsp;</span></td>
<td class="column-entry-yellow">Test</td>
</tr>

<tr>
<td><a name="L15">15</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre>    res[i] = (p[i] == 0) ? res[i] : res[i] + d[i];</pre></div></td>
</tr>

<tr>
<td><a name="L16">16</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre>  }</pre></div></td>
</tr>

<tr>
<td><a name="L17">17</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre></pre></div></td>
</tr>

<tr>
<td><a name="L18">18</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre>  foo();</pre></div></td>
</tr>

<tr>
<td></td>
<td></td>
<td class="column-entry-white">inline</td>
<td><pre style="display:inline">  </pre><span class="column-entry-yellow"> foo can be inlined into Test with cost=30 (threshold=412)&nbsp;</span></td>
<td class="column-entry-yellow">Test</td>
</tr>

<tr>
<td></td>
<td></td>
<td class="column-entry-green">inline</td>
<td><pre style="display:inline">  </pre><span class="column-entry-yellow"> foo inlined into Test&nbsp;</span></td>
<td class="column-entry-yellow">Test</td>
</tr>

<tr>
<td><a name="L19">19</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre></pre></div></td>
</tr>

<tr>
<td><a name="L20">20</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre>  foo(); bar(); foo();</pre></div></td>
</tr>

<tr>
<td></td>
<td></td>
<td class="column-entry-red">inline</td>
<td><pre style="display:inline">         </pre><span class="column-entry-yellow"> bar will not be inlined into Test because its definition is unavailable&nbsp;</span></td>
<td class="column-entry-yellow">Test</td>
</tr>

<tr>
<td></td>
<td></td>
<td class="column-entry-white">inline</td>
<td><pre style="display:inline">  </pre><span class="column-entry-yellow"> foo can be inlined into Test with cost=30 (threshold=412)&nbsp;</span></td>
<td class="column-entry-yellow">Test</td>
</tr>

<tr>
<td></td>
<td></td>
<td class="column-entry-green">inline</td>
<td><pre style="display:inline">  </pre><span class="column-entry-yellow"> foo inlined into Test&nbsp;</span></td>
<td class="column-entry-yellow">Test</td>
</tr>

<tr>
<td></td>
<td></td>
<td class="column-entry-white">inline</td>
<td><pre style="display:inline">                </pre><span class="column-entry-yellow"> foo can be inlined into Test with cost=30 (threshold=412)&nbsp;</span></td>
<td class="column-entry-yellow">Test</td>
</tr>

<tr>
<td></td>
<td></td>
<td class="column-entry-green">inline</td>
<td><pre style="display:inline">                </pre><span class="column-entry-yellow"> foo inlined into Test&nbsp;</span></td>
<td class="column-entry-yellow">Test</td>
</tr>

<tr>
<td><a name="L21">21</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre>}</pre></div></td>
</tr>

<tr>
<td><a name="L22">22</a></td>
<td></td>
<td></td>
<td><div class="highlight"><pre></pre></div></td>
</tr>

</tbody>
</table>
</body>
</html>
