forked from OSchip/llvm-project
[Bitcode] Check for live uses of llvm.cmdline/embedded.module
The one use check here is very misleading: At this point we should actually have no uses, because the only possible use in llvm.used was already dropped. But because the use in llvm.used is generally bitcasted, we end up still having one dead use here. What we actually want to check is that there are no live uses, for which a helper has recently been added.
This commit is contained in:
parent
ba36556145
commit
40d7d2ed66
|
@ -4943,7 +4943,7 @@ void llvm::embedBitcodeInModule(llvm::Module &M, llvm::MemoryBufferRef Buf,
|
||||||
ConstantExpr::getPointerBitCastOrAddrSpaceCast(GV, UsedElementType));
|
ConstantExpr::getPointerBitCastOrAddrSpaceCast(GV, UsedElementType));
|
||||||
if (llvm::GlobalVariable *Old =
|
if (llvm::GlobalVariable *Old =
|
||||||
M.getGlobalVariable("llvm.embedded.module", true)) {
|
M.getGlobalVariable("llvm.embedded.module", true)) {
|
||||||
assert(Old->hasOneUse() &&
|
assert(Old->hasZeroLiveUses() &&
|
||||||
"llvm.embedded.module can only be used once in llvm.compiler.used");
|
"llvm.embedded.module can only be used once in llvm.compiler.used");
|
||||||
GV->takeName(Old);
|
GV->takeName(Old);
|
||||||
Old->eraseFromParent();
|
Old->eraseFromParent();
|
||||||
|
@ -4966,7 +4966,7 @@ void llvm::embedBitcodeInModule(llvm::Module &M, llvm::MemoryBufferRef Buf,
|
||||||
UsedArray.push_back(
|
UsedArray.push_back(
|
||||||
ConstantExpr::getPointerBitCastOrAddrSpaceCast(GV, UsedElementType));
|
ConstantExpr::getPointerBitCastOrAddrSpaceCast(GV, UsedElementType));
|
||||||
if (llvm::GlobalVariable *Old = M.getGlobalVariable("llvm.cmdline", true)) {
|
if (llvm::GlobalVariable *Old = M.getGlobalVariable("llvm.cmdline", true)) {
|
||||||
assert(Old->hasOneUse() &&
|
assert(Old->hasZeroLiveUses() &&
|
||||||
"llvm.cmdline can only be used once in llvm.compiler.used");
|
"llvm.cmdline can only be used once in llvm.compiler.used");
|
||||||
GV->takeName(Old);
|
GV->takeName(Old);
|
||||||
Old->eraseFromParent();
|
Old->eraseFromParent();
|
||||||
|
|
Loading…
Reference in New Issue