[llvm] r319390 - LowerTypeTests: Deduplicate code. NFC.
Peter Collingbourne via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 29 16:27:08 PST 2017
Author: pcc
Date: Wed Nov 29 16:27:08 2017
New Revision: 319390
URL: http://llvm.org/viewvc/llvm-project?rev=319390&view=rev
Log:
LowerTypeTests: Deduplicate code. NFC.
Modified:
llvm/trunk/lib/Transforms/IPO/LowerTypeTests.cpp
Modified: llvm/trunk/lib/Transforms/IPO/LowerTypeTests.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/LowerTypeTests.cpp?rev=319390&r1=319389&r2=319390&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/IPO/LowerTypeTests.cpp (original)
+++ llvm/trunk/lib/Transforms/IPO/LowerTypeTests.cpp Wed Nov 29 16:27:08 2017
@@ -1480,38 +1480,25 @@ void LowerTypeTestsModule::buildBitSetsF
for (auto &&MemSet : TypeMembers)
GLB.addFragment(MemSet);
- // Build the bitsets from this disjoint set.
- if (Globals.empty() || isa<GlobalVariable>(Globals[0]->getGlobal())) {
- // Build a vector of global variables with the computed layout.
- std::vector<GlobalTypeMember *> OrderedGVs(Globals.size());
- auto OGI = OrderedGVs.begin();
- for (auto &&F : GLB.Fragments) {
- for (auto &&Offset : F) {
- auto GV = dyn_cast<GlobalVariable>(Globals[Offset]->getGlobal());
- if (!GV)
- report_fatal_error("Type identifier may not contain both global "
- "variables and functions");
- *OGI++ = Globals[Offset];
- }
- }
-
- buildBitSetsFromGlobalVariables(TypeIds, OrderedGVs);
- } else {
- // Build a vector of functions with the computed layout.
- std::vector<GlobalTypeMember *> OrderedFns(Globals.size());
- auto OFI = OrderedFns.begin();
- for (auto &&F : GLB.Fragments) {
- for (auto &&Offset : F) {
- auto Fn = dyn_cast<Function>(Globals[Offset]->getGlobal());
- if (!Fn)
- report_fatal_error("Type identifier may not contain both global "
- "variables and functions");
- *OFI++ = Globals[Offset];
- }
+ // Build a vector of globals with the computed layout.
+ bool IsGlobalSet =
+ Globals.empty() || isa<GlobalVariable>(Globals[0]->getGlobal());
+ std::vector<GlobalTypeMember *> OrderedGTMs(Globals.size());
+ auto OGTMI = OrderedGTMs.begin();
+ for (auto &&F : GLB.Fragments) {
+ for (auto &&Offset : F) {
+ if (IsGlobalSet != isa<GlobalVariable>(Globals[Offset]->getGlobal()))
+ report_fatal_error("Type identifier may not contain both global "
+ "variables and functions");
+ *OGTMI++ = Globals[Offset];
}
-
- buildBitSetsFromFunctions(TypeIds, OrderedFns);
}
+
+ // Build the bitsets from this disjoint set.
+ if (IsGlobalSet)
+ buildBitSetsFromGlobalVariables(TypeIds, OrderedGTMs);
+ else
+ buildBitSetsFromFunctions(TypeIds, OrderedGTMs);
}
/// Lower all type tests in this module.
More information about the llvm-commits
mailing list