<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 --- - Global named registers support for pointer types"
   href="http://llvm.org/bugs/show_bug.cgi?id=19837">19837</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Global named registers support for pointer types
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </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>normal
          </td>
        </tr>

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

        <tr>
          <th>Component</th>
          <td>LLVM Codegen
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>renato.golin@linaro.org
          </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>Pointer types are supposed to fit on the architecture registers, so it should
be reasonably safe to assume they're safe for named registers. The code below
asserts on Clang (Bad register type):

struct p4_Thread {
  struct {
    int len
  } word
};
register struct p4_Thread *p4TH asm("%r15");
fn1() {
  (*p4TH).word.len;
}

Not only we could add support for pointer types, but we *must* not assert on
bad register types. We should have an error on SemaDecl before it gets to
CGExpr, by checking the type of the register variable and emitting a proper
error.

Once this is accepted by Clang, it will fail on LLVM, since "%r15" is not in
the list of registers accepted. But that's a separate problem.</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>