[NFC] Use fold expressions to replace discarded initializer_lists (#83693)

This commit is contained in:
MagentaTreehouse 2024-03-02 17:44:17 -05:00 committed by GitHub
parent 60fbd60501
commit f505a92fc2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 7 additions and 25 deletions

View File

@ -302,10 +302,7 @@ bool ByteCodeEmitter::emitOp(Opcode Op, const Tys &... Args, const SourceInfo &S
if (SI) if (SI)
SrcMap.emplace_back(Code.size(), SI); SrcMap.emplace_back(Code.size(), SI);
// The initializer list forces the expression to be evaluated (..., emit(P, Code, Args, Success));
// for each argument in the variadic template, in order.
(void)std::initializer_list<int>{(emit(P, Code, Args, Success), 0)...};
return Success; return Success;
} }

View File

@ -412,20 +412,15 @@ public:
private: private:
std::tuple<SLSBLRThunkInserter> TIs; std::tuple<SLSBLRThunkInserter> TIs;
// FIXME: When LLVM moves to C++17, these can become folds
template <typename... ThunkInserterT> template <typename... ThunkInserterT>
static void initTIs(Module &M, static void initTIs(Module &M,
std::tuple<ThunkInserterT...> &ThunkInserters) { std::tuple<ThunkInserterT...> &ThunkInserters) {
(void)std::initializer_list<int>{ (..., std::get<ThunkInserterT>(ThunkInserters).init(M));
(std::get<ThunkInserterT>(ThunkInserters).init(M), 0)...};
} }
template <typename... ThunkInserterT> template <typename... ThunkInserterT>
static bool runTIs(MachineModuleInfo &MMI, MachineFunction &MF, static bool runTIs(MachineModuleInfo &MMI, MachineFunction &MF,
std::tuple<ThunkInserterT...> &ThunkInserters) { std::tuple<ThunkInserterT...> &ThunkInserters) {
bool Modified = false; return (0 | ... | std::get<ThunkInserterT>(ThunkInserters).run(MMI, MF));
(void)std::initializer_list<int>{
Modified |= std::get<ThunkInserterT>(ThunkInserters).run(MMI, MF)...};
return Modified;
} }
}; };

View File

@ -404,20 +404,15 @@ public:
private: private:
std::tuple<SLSBLRThunkInserter> TIs; std::tuple<SLSBLRThunkInserter> TIs;
// FIXME: When LLVM moves to C++17, these can become folds
template <typename... ThunkInserterT> template <typename... ThunkInserterT>
static void initTIs(Module &M, static void initTIs(Module &M,
std::tuple<ThunkInserterT...> &ThunkInserters) { std::tuple<ThunkInserterT...> &ThunkInserters) {
(void)std::initializer_list<int>{ (..., std::get<ThunkInserterT>(ThunkInserters).init(M));
(std::get<ThunkInserterT>(ThunkInserters).init(M), 0)...};
} }
template <typename... ThunkInserterT> template <typename... ThunkInserterT>
static bool runTIs(MachineModuleInfo &MMI, MachineFunction &MF, static bool runTIs(MachineModuleInfo &MMI, MachineFunction &MF,
std::tuple<ThunkInserterT...> &ThunkInserters) { std::tuple<ThunkInserterT...> &ThunkInserters) {
bool Modified = false; return (0 | ... | std::get<ThunkInserterT>(ThunkInserters).run(MMI, MF));
(void)std::initializer_list<int>{
Modified |= std::get<ThunkInserterT>(ThunkInserters).run(MMI, MF)...};
return Modified;
} }
}; };

View File

@ -118,20 +118,15 @@ public:
private: private:
std::tuple<RetpolineThunkInserter, LVIThunkInserter> TIs; std::tuple<RetpolineThunkInserter, LVIThunkInserter> TIs;
// FIXME: When LLVM moves to C++17, these can become folds
template <typename... ThunkInserterT> template <typename... ThunkInserterT>
static void initTIs(Module &M, static void initTIs(Module &M,
std::tuple<ThunkInserterT...> &ThunkInserters) { std::tuple<ThunkInserterT...> &ThunkInserters) {
(void)std::initializer_list<int>{ (..., std::get<ThunkInserterT>(ThunkInserters).init(M));
(std::get<ThunkInserterT>(ThunkInserters).init(M), 0)...};
} }
template <typename... ThunkInserterT> template <typename... ThunkInserterT>
static bool runTIs(MachineModuleInfo &MMI, MachineFunction &MF, static bool runTIs(MachineModuleInfo &MMI, MachineFunction &MF,
std::tuple<ThunkInserterT...> &ThunkInserters) { std::tuple<ThunkInserterT...> &ThunkInserters) {
bool Modified = false; return (0 | ... | std::get<ThunkInserterT>(ThunkInserters).run(MMI, MF));
(void)std::initializer_list<int>{
Modified |= std::get<ThunkInserterT>(ThunkInserters).run(MMI, MF)...};
return Modified;
} }
}; };