[PATCH] D90948: [WebAssembly] [WIP] call_indirect issues table number relocs

Sam Clegg via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 17 06:59:17 PST 2020


sbc100 added inline comments.


================
Comment at: llvm/test/MC/WebAssembly/debug-info.ll:14
 ; CHECK-NEXT:    Type: IMPORT (0x2)
-; CHECK-NEXT:    Size: 81
 ; CHECK-NEXT:    Offset: 18
----------------
wingo wrote:
> sbc100 wrote:
> > Is this because we don't import that table anymore?
> > 
> > I wonder if this change, along with all the other test changes that are just about removing the table-by-default can land first.
> > 
> > i.e. can we make a change "don't emit table import in object files that don't have table relocation".    
> > 
> > Just in the interest of shrinking this PR?
> Yeah I think that's the reason, yes.
> 
> Regarding patch splitting -- The issue is that this patch does two things:
>  - makes call_indirect have a table operand, thus causing table relocs.  Also makes call_indirect take up more space because of sleb128 relocs.
>  - emits the indirect function table import if and only if there are relocs against it (either implicitly via `TABLE_INDEX` or explicity via `TABLE_NUMBER`)
> 
> If you just do the first part, you have to then hack around to avoid a double-import of the indirect function table (the one that comes from the table operand, and the hard-coded import).  If you just do the second, you miss references from call_indirect.
> 
> I think this change may make sense as a unit, rather than split.  WDYT?
I'm not clear why we can't to the second part first... why can't we emit the table if and only if there is a TABLE_INDEX relocation? 

Are you suggesting that there could be some call_indirect instruction generated by MC that doesn't have a TABLE_INDEX relocation attached to it?  


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D90948



More information about the llvm-commits mailing list