ibookstein added a comment.

I see. What is the guiding principle there, though? Generating correct IR "up 
front" / "the first time" rather than "fixing it up as you go via 
manipulations"? (could you give a link?)
I can see the engineering consideration in not letting IR manipulations creep 
into the CFE, I just want to make sure that's the principle that we're asked to 
follow.
In the end this isn't the first instance where the "streaming" design of 
GlobalDecl emission forces a fixup/rewrite of a previous decision, as can be 
evidenced by a close sibling of this feature, 
`CodeGenModule::EmitAliasDefinition` (which uses exactly that idiom, for a very 
similar use-case)...
It will always be either a fixup or an accumulate/commit idiom, since there 
will always be a GlobalDecl ordering where the information to make 'the perfect 
module-global decision' isn't available upon having to act on partial 
information.

In the end, I would like to have the verification of IFuncs having a defined 
resolver restored (and avoid more dependencies being taken on this being 
'allowed' at the IR level), since having LLVM emit an object file with an 
undefined STT_GNU_IFUNC is probably just trouble and confusion waiting to 
happen.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D112349

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to