[PATCH] D101538: [GlobalISel][IRTranslator] Make translate() methods virtual.

Jay Foad via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed May 12 01:19:45 PDT 2021


foad added a comment.

In D101538#2751818 <https://reviews.llvm.org/D101538#2751818>, @aemerson wrote:

> In D101538#2750853 <https://reviews.llvm.org/D101538#2750853>, @zuban32 wrote:
>
>> In D101538#2745606 <https://reviews.llvm.org/D101538#2745606>, @aemerson wrote:
>>
>>> Is this really necessary? Our preference is to use custom combines/lowering passes, or custom legalization, to do this.
>>
>> Well, our usecase might not be that canonical, let me briefly explain. For example, translating a bitcast - default IRTranslator implementation turns it into a COPY when LLTs of src and dst are the same. In our target (SPIR-V) LLTs do not matter that much, the typeinfo is represented with some pseudo instructions, so we run into this situation quite often. And losing a bitcast in the translator doesn't work for us as it'd obviously be quite difficult to recover it.
>
> I see. Is this a widespread issue with a lot of the translation functions or just bitcasts? If it's just bitcast you could just make that virtual so we don't have to pay the virtual function call overhead every translate. If not, then I'm ok with doing this.

How about doing it with https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern#Static_polymorphism to avoid the virtual function call overhead?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D101538



More information about the llvm-commits mailing list