<html>
    <head>
      <base href="http://bugzilla.gdcproject.org/">
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Optimization makes incorrect results"
   href="http://bugzilla.gdcproject.org/show_bug.cgi?id=198#c2">Comment # 2</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Optimization makes incorrect results"
   href="http://bugzilla.gdcproject.org/show_bug.cgi?id=198">bug 198</a>
              from <span class="vcard"><a class="email" href="mailto:ibuclaw@gdcproject.org" title="Iain Buclaw <ibuclaw@gdcproject.org>"> <span class="fn">Iain Buclaw</span></a>
</span></b>
        <pre>Seems to be something bizarre going on with struct member functions, possibly
only related to instantiated members.  Having a bare function works just fine.

ref Vector opOpAssign (ref Vector rthis, Vector operand)
{
    rthis.x += operand.x;
    rthis.y += operand.y;
    rthis.z += operand.z;
    return rthis;
}

Either a mismatch between function type and function parameter types are
throwing off the optimizer, or something else is afoot to make it believe that
the 'this' value members can never change.

In gdc-5, all optimisation levels constfold the answer correctly in the
testcase, except for -Og level, which calls f(), but the entire foreach loop
has been reduced to nothing, so it passes Vector(0,0,0) to sum().</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are watching all bug changes.</li>
      </ul>
    </body>
</html>