[PATCH] D138840: Verifier: Disallow uses of intrinsic global variables

Matt Arsenault via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 28 11:28:13 PST 2022


arsenm created this revision.
arsenm added reviewers: rafauler, efriedma, jdoerfert, sdmitriev, tra, tejohnson.
Herald added subscribers: kosarev, kerbowa, jvesely.
Herald added a project: All.
arsenm requested review of this revision.
Herald added a subscriber: wdng.
Herald added a project: LLVM.

appendToGlobalCtors implicitly assumes this is the case, since it
deletes and recreates without trying to update any uses.

      

This ran into an interesting problem in a few linker tests. During the
link, ConstantExpr casts were speculatively created to replace any
uses that might need them for replacement. These unused ConstantExprs
would hang around and still appear on the use list. It seems like a
bug that those stick around, but I'm not sure where those are supposed
to be cleaned up. Avoid this by not creating the casts for appending
linkage.

      

Delete one of the casts entirely as it breaks no tests. The verifier
has enforced a specific type for these since 2011, so I don't see why
we would need to handle linking modules with a wrong types. One test
does fail without the second cast (Linker/appending-global-proto.ll,
added by D95126 <https://reviews.llvm.org/D95126>). This test looks contrived; it's using appending
linkage with a regular variable. The LangRef suggests this is illegal
(and suggests another missing verifier check).


https://reviews.llvm.org/D138840

Files:
  llvm/test/CodeGen/AMDGPU/cgp-addressing-modes-flat.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D138840.478294.patch
Type: text/x-patch
Size: 43811 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221128/393d3a52/attachment.bin>


More information about the llvm-commits mailing list