title: Is it allowed to use aliasing in __builtin_add_overflow?
body: <p>I'm currently have a code base that uses integer overflow prone additions and multiplications. I'm trying to replace that with <code>__builtin_add_overflow()</code> functions. Reading the source, I found many occurences in the following format:</p>
  
  <pre class="lang-c prettyprint-override"><code>x += y;
  </code></pre>
  
  <p>Can I replace that with <code>__builtin_add_overflow(x, y, &amp;x)</code> or do I need a temporary variable as seen below?</p>
  
  <pre class="lang-c prettyprint-override"><code>int tmp;
  
  if (__builtin_add_overflow(x, y, &amp;tmp)) { ... }
  x = tmp;
  </code></pre>