<div dir="ltr"><div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Apr 4, 2019 at 11:15 PM Aaron Ballman via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Thu, Apr 4, 2019 at 12:58 PM Chris Lattner <<a href="mailto:clattner@nondot.org" target="_blank">clattner@nondot.org</a>> wrote:<br>
><br>
><br>
><br>
> > On Apr 4, 2019, at 5:37 AM, Don Hinton via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
> ><br>
> > I'd like to propose adding `isa_or_null<>` to replace the following usage pattern that's relatively common in conditionals:<br>
> ><br>
> >   var && isa<T>(var)  =>>  isa_or_null<T>(var)<br>
> ><br>
> > And in particular when `var` is a method call which might be expensive, e.g.:<br>
> ><br>
> >   X->foo() && isa<T>(X->foo())  =>>  isa_or_null<T>(X->foo())<br>
> ><br>
> > The implementation could be a simple wrapper around isa<>, and while the IR produced is only slightly more efficient, the elimination of an extra call could be worthwhile.<br>
><br>
> I’d love to see this, I agree with downstream comments though that this name will be confusing.  isa_and_nonnull<>. ?<br>
<br>
tbh, I don't think the proposed name will be all that confusing --<br>
we're used to _or_null() returning "the right thing" when given null.<br>
isa_and_nonnull<> is a bit of a weird name for me, but I could<br>
probably live with it. We could spell it nonnull_and_isa<> to reflect<br>
the order of the operations, but that sort of hides the important part<br>
of the API (the "isa" bit).<br></blockquote><div>I think "isa_nonnull" would read fine too. To me, the extra "and" makes the ordering more of an issue.<br></div><div><br></div><div>-- HT<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
~Aaron<br>
<br>
><br>
> -Chris<br>
><br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div></div></div>