<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><span class="vcard"><a class="email" href="mailto:david.l.kreitzer@intel.com" title="David Kreitzer <david.l.kreitzer@intel.com>"> <span class="fn">David Kreitzer</span></a>
</span> changed
              <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - RA breaks invariance of generated code"
   href="https://llvm.org/bugs/show_bug.cgi?id=24500">bug 24500</a>
        <br>
             <table border="1" cellspacing="0" cellpadding="8">
          <tr>
            <th>What</th>
            <th>Removed</th>
            <th>Added</th>
          </tr>

         <tr>
           <td style="text-align:right;">Status</td>
           <td>NEW
           </td>
           <td>RESOLVED
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">URL</td>
           <td>
                
           </td>
           <td>http://reviews.llvm.org/rL247042
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">Resolution</td>
           <td>---
           </td>
           <td>FIXED
           </td>
         </tr></table>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - RA breaks invariance of generated code"
   href="https://llvm.org/bugs/show_bug.cgi?id=24500#c1">Comment # 1</a>
              on <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - RA breaks invariance of generated code"
   href="https://llvm.org/bugs/show_bug.cgi?id=24500">bug 24500</a>
              from <span class="vcard"><a class="email" href="mailto:david.l.kreitzer@intel.com" title="David Kreitzer <david.l.kreitzer@intel.com>"> <span class="fn">David Kreitzer</span></a>
</span></b>
        <pre>The bug was actually in the X86 call frame optimization, which used a
non-deterministic map walk to decide the order in which calls are optimized.
(The map used machine instruction pointers as keys.) The different optimization
order resulted in different orderings in vreg use lists, which ultimately
resulted in register allocation differences.

The fix was to use a vector rather than a map to hold the list of call
optimization candidates.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>