<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </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 - Identity addrspacecast's are thrown with asserts enabled."
   href="https://bugs.llvm.org/show_bug.cgi?id=42296">42296</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Identity addrspacecast's are thrown with asserts enabled.
          </td>
        </tr>

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

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

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

        <tr>
          <th>OS</th>
          <td>Windows NT
          </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>-New Bugs
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>alex.davies@iinet.net.au
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>htmldeveloper@gmail.com, llvm-bugs@lists.llvm.org, neeilans@live.com, richard-llvm@metafoo.co.uk
          </td>
        </tr></table>
      <p>
        <div>
        <pre>CastInst::castIsValid returns false for addrspacecasts from/to the same space,
triggering an assertion failure in clang debug builds:

  assert(CastInst::castIsValid(opc, C, Ty) && "Invalid constantexpr cast!");

A simple test case:

  static int x;
  return *(unsigned char __attribute__((address_space(0))) *)&x;

Which should blow up on any system with asserts enabled. Note, casting to a
different type is required to reproduce the error, as otherwise clang
simplifies the cast away.

With assertions disabled, the code compiles, however the identity addrspacecast
is emitted and probably should not be.

Note: address_space(0) is used only as an example here, the assertion will fail
whenever the value and cast are in the same space.</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>