File tree Expand file tree Collapse file tree
include/llvm-dialects/Dialect Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -414,6 +414,12 @@ class VisitorBuilder : private detail::VisitorBuilderBase {
414414 return *this ;
415415 }
416416
417+ template <typename ... OpTs>
418+ VisitorBuilder &addSet (void (PayloadT::*fn)(llvm::Instruction &)) {
419+ addSetMemberCase (detail::VisitorKey::opSet<OpTs...>(), fn);
420+ return *this ;
421+ }
422+
417423 VisitorBuilder &addSet (const OpSet &opSet,
418424 VisitorResult (*fn)(PayloadT &,
419425 llvm::Instruction &I)) {
@@ -512,6 +518,15 @@ class VisitorBuilder : private detail::VisitorBuilderBase {
512518 VisitorBuilderBase::add (key, &VisitorBuilder::setForwarder<ReturnT>, data);
513519 }
514520
521+ template <typename ReturnT>
522+ void addSetMemberCase (detail::VisitorKey key,
523+ ReturnT (PayloadT::*fn)(llvm::Instruction &)) {
524+ detail::VisitorCallbackData data{};
525+ static_assert (sizeof (fn) <= sizeof (data.data ));
526+ memcpy (&data.data , &fn, sizeof (fn));
527+ VisitorBuilderBase::add (key, &VisitorBuilder::setForwarder<ReturnT>, data);
528+ }
529+
515530 template <typename OpT, typename ReturnT>
516531 void addMemberFnCase (detail::VisitorKey key, ReturnT (PayloadT::*fn)(OpT &)) {
517532 detail::VisitorCallbackData data{};
You can’t perform that action at this time.
0 commit comments