fhahn added inline comments.

================
Comment at: clang/lib/CodeGen/CGBuiltin.cpp:14323
+    Result = Builder.CreateIntrinsic(
+        Intrinsic::ptrmask, {Args.SrcType, SrcForMask->getType(), 
Args.IntType},
+        {SrcForMask, NegatedMask}, nullptr, "aligned_result");
----------------
lebedev.ri wrote:
> arichardson wrote:
> > lebedev.ri wrote:
> > > Is sufficient amount of passes, analyses know about this intrinsic?
> > Good question. In the simple test cases that I looked at the code 
> > generation was equivalent. 
> > 
> > In our fork we still use ptrtoint+inttoptr since I implemented them before 
> > the new intrinsic existed. But since the ptrmask instrinsic exists now I 
> > thought I'd use it for upstreaming.
> > I'll investigate if this results in worse codegen for more complex uses.
> > 
> (TLDR: before producing it in more cases in clang, i think it should be first 
> ensured
> that everything in middle-end is fully aware of said intrinsic. (i.e. using 
> it vs it's
> exploded form results in no differences in final assembly on a sufficient 
> test coverage))
> I'll investigate if this results in worse codegen for more complex uses.

The findings would be interesting indeed. 

One thing to watch out for is that ptrmask should give better alias analysis 
results than ptrtoint/inttoptr. Also, IIRC some instcombine transformations for 
ptrtoint/inttoptr are not strictly valid according to the LangRef. Not sure if 
that changed yet.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D71499/new/

https://reviews.llvm.org/D71499



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to