<html>
    <head>
      <base href="http://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - [Statepoint] Forward nullness of pointers through statepoints"
   href="http://llvm.org/bugs/show_bug.cgi?id=21732">21732</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>[Statepoint] Forward nullness of pointers through statepoints
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>libraries
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Linux
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Scalar Optimizations
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>listmail@philipreames.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvmbugs@cs.uiuc.edu
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>The nullness of a pointer does not change when it's relocated by a safepoint. 
As a result, it is sound to forward nullness facts from before a statepoint to
the relocated value after the safepoint.

There are two sub-cases:
- isKnownNonNull(pointer) should set the nonnull attribute on the gc.relocate
representing the relocation of 'pointer'.
- The gc.relocate representing the relocation of a constant 'null' should be
replaced with the constant 'null'.  This should probably be placed under an
option parameterized by the GC type.  While every relocating collector I'm
aware of preserves the same bit pattern for the 'null' constant when
relocating, there could be some collector out there that doesn't.  


Doing this in the code inserting the relocations will be strictly more powerful
than doing it post insertion, but given these should be fairly straight forward
to implement, there's no reason not to do it post insertion as well.</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>