VTT for the object shouldn't be dso_local always

Hi ,

We are chasing the front end issue w.r.t dso_local like

_ZTT5Base2 and other symbols are not marked with dso_local and some are marked like _ZTV7ComBase with dso_local and we understanding difference and if some-one has the explanation for the difference ,that will help us to fix the issue in our versioned compiler with better understanding .

Thank you

@MaskRay ,this is something we need to fix this inconsistent here and we ready to send the patch for the same .

before that we would like to know you thoughts ?

On trunk, everything appears to be marked dso_local. This is expected: you’re not building with -fPIC, so the object file is guaranteed to be linked into an executable.

Not sure what relevant patch landed after LLVM 15.

Oh, nevermind, I see what you mean.

I might have broken something with ⚙ D128482 [clang codegen] Add dso_local/hidden/etc. markings to VTT declarations

(Edit: for anyone trying to follow, the godbolt link shows IR for two modes: -fPIE, and -fno-PIE. The compilers used are also different, but that isn’t actually relevant; LLVM 15 and trunk behave the same way.)

Here’s the discussion thread that led to the change @efriedma-quic mentioned.

I’m still trying to understand exactly what is broken. D128482 fixed the regression I reported, so I’m assuming the godbolt link is pointing out some unexpected fallout?