<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Jul 2, 2020, at 13:09, Hal Finkel via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" class="">
  
  <div class=""><p class="">My general feeling is this: No optimizations should be creating
      int2ptr/ptr2int. We really need to fix them all. They should use
      pointer casts and i8* GEPs. This has, unfortunately, been a
      problem for a long time. As Johannes says, optimizing
      int2ptr/ptr2int is very tricky. In part, becaue all dependencies,
      including implicit control dependencies, end up being part of the
      resulting aliasing based-on chain, and we have a set of bug
      reports discussing this is great detail.</p><p class=""> -Hal<br class="">
    </p>
    </div></div></blockquote>We recently started introducing some more of these to represent no-op address space conversions in cases where pointer bits are reinterpreted. There’s currently a whole in the IR where there’s no other way to represent a pointer reinterpret. To fix this case, I think we need to re-allow bitcasts between pointers with different address spaces, but the same size.</div><div><br class=""></div><div>-Matt</div><br class=""></body></html>