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

Aleksandr Bezzubikov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue May 11 12:34:21 PDT 2021


zuban32 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.

Unfortunately not, we have custom lowering for GEPs, extract/insertvalues,, a couple of others too. The set itself is not that big, but IMO it'd look weird if 8-10 translateXXX functions would be virtual while others are not.


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