diff options
author | Vedant Kumar <vsk@apple.com> | 2015-12-19 08:48:43 +0000 |
---|---|---|
committer | Vedant Kumar <vsk@apple.com> | 2015-12-19 08:48:43 +0000 |
commit | 44dd9871e867a3164c5322b2ee4dff9cb03e0a41 (patch) | |
tree | e81a661af2a87048c8d3a10be7a203553b97a656 /llvm/lib/Bitcode/Writer | |
parent | d481752e682b401214af403d18aa5ad658de572a (diff) | |
download | bcm5719-llvm-44dd9871e867a3164c5322b2ee4dff9cb03e0a41.tar.gz bcm5719-llvm-44dd9871e867a3164c5322b2ee4dff9cb03e0a41.zip |
Revert "Reapply "[IR] Move optional data in llvm::Function into a hungoff uselist""
This reverts commit r256093.
This broke lld-x86_64-win7 because of -Werror,-Wc++1y-extensions.
llvm-svn: 256094
Diffstat (limited to 'llvm/lib/Bitcode/Writer')
-rw-r--r-- | llvm/lib/Bitcode/Writer/ValueEnumerator.cpp | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp b/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp index faf82a7926e..2a9b4490ffb 100644 --- a/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp +++ b/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp @@ -87,9 +87,15 @@ static OrderMap orderModule(const Module &M) { if (!isa<GlobalValue>(A.getAliasee())) orderValue(A.getAliasee(), OM); for (const Function &F : M) { - for (const Use &U : F.operands()) - if (!isa<GlobalValue>(U.get())) - orderValue(U.get(), OM); + if (F.hasPrefixData()) + if (!isa<GlobalValue>(F.getPrefixData())) + orderValue(F.getPrefixData(), OM); + if (F.hasPrologueData()) + if (!isa<GlobalValue>(F.getPrologueData())) + orderValue(F.getPrologueData(), OM); + if (F.hasPersonalityFn()) + if (!isa<GlobalValue>(F.getPersonalityFn())) + orderValue(F.getPersonalityFn(), OM); } OM.LastGlobalConstantID = OM.size(); @@ -267,8 +273,12 @@ static UseListOrderStack predictUseListOrder(const Module &M) { for (const GlobalAlias &A : M.aliases()) predictValueUseListOrder(A.getAliasee(), nullptr, OM, Stack); for (const Function &F : M) { - for (const Use &U : F.operands()) - predictValueUseListOrder(U.get(), nullptr, OM, Stack); + if (F.hasPrefixData()) + predictValueUseListOrder(F.getPrefixData(), nullptr, OM, Stack); + if (F.hasPrologueData()) + predictValueUseListOrder(F.getPrologueData(), nullptr, OM, Stack); + if (F.hasPersonalityFn()) + predictValueUseListOrder(F.getPersonalityFn(), nullptr, OM, Stack); } return Stack; @@ -311,10 +321,20 @@ ValueEnumerator::ValueEnumerator(const Module &M, for (const GlobalAlias &GA : M.aliases()) EnumerateValue(GA.getAliasee()); - // Enumerate any optional Function data. + // Enumerate the prefix data constants. for (const Function &F : M) - for (const Use &U : F.operands()) - EnumerateValue(U.get()); + if (F.hasPrefixData()) + EnumerateValue(F.getPrefixData()); + + // Enumerate the prologue data constants. + for (const Function &F : M) + if (F.hasPrologueData()) + EnumerateValue(F.getPrologueData()); + + // Enumerate the personality functions. + for (Module::const_iterator I = M.begin(), E = M.end(); I != E; ++I) + if (I->hasPersonalityFn()) + EnumerateValue(I->getPersonalityFn()); // Enumerate the metadata type. // |