[PATCH] D75201: [ThinLTO/LowerTypeTests] Handle unpromoted local type ids

Eugene Leviant via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 2 09:55:34 PST 2020


evgeny777 added a comment.

@tejohnson

> This should happen if the type ID has no use on type metadata, but then I think it should be removed by WPD.

It can't be removed or otherwise handled by WPD, because WPD doesn't even see this type.test (it doesn't exist in the index). The problem is
in the analysis phase of thin LTO compilation. I suggest you take a look at `findDevirtualizableCallsForTypeTest` function and then at 
`findLoadCallsAtConstantOffset`. The latter can process three kind of vptr users: bitcast, load and gep. It can't process store with constant 
expression. So far we don't reflect this type.test in summary index and WPD doesn't see it at all.

Here is an object file F11467617: v2.bc <https://reviews.llvm.org/F11467617>

I'm using the following command to compile

  lld-link  /dll v2.bc /out:a.dll /force:unresolved /nodefaultlib /lldsavetemps

Check `??_GRealFile@?A0x1AE555D7@@UEAAPEAXI at Z` function in temps.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D75201





More information about the llvm-commits mailing list