https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90273
--- Comment #4 from Jan Hubicka <hubicka at gcc dot gnu.org> --- The code is: inline bool IsNodeInternal() const { return false; } template <typename First, typename... Args> inline bool IsNodeInternal(First aFirst, Args... aArgs) const { return mNodeInfo->Equals(aFirst) || IsNodeInternal(aArgs...); } public: inline bool IsHTMLElement() const { return IsElement() && IsInNamespace(3); } inline bool IsHTMLElement(const nsAtom* aTag) const { return IsElement() && mNodeInfo->Equals(aTag, 3); } template <typename First, typename... Args> inline bool IsAnyOfHTMLElements(First aFirst, Args... aArgs) const { return IsHTMLElement() && IsNodeInternal(aFirst, aArgs...); } $ grep ";; Function nsINode::IsNodeInternal" *cfg2 | less ;; Function nsINode::IsNodeInternal (_ZNK7nsINode14IsNodeInternalEv, funcdef_no=13668, decl_uid=274623, cgraph_uid=7143, symbol_order=7869) ;; Function nsINode::IsNodeInternal<nsStaticAtom*> (_ZNK7nsINode14IsNodeInternalIP12nsStaticAtomJEEEbT_DpT0_, funcdef_no=58886, decl_uid=1359969, cgraph_uid=49491, symbol_order=50680) ;; Function nsINode::IsNodeInternal<nsStaticAtom*, nsStaticAtom*> (_ZNK7nsINode14IsNodeInternalIP12nsStaticAtomJS2_EEEbT_DpT0_, funcdef_no=58870, decl_uid=1359893, cgraph_uid=49475, symbol_order=50664) ;; Function nsINode::IsNodeInternal<nsStaticAtom*, nsStaticAtom*, nsStaticAtom*> (_ZNK7nsINode14IsNodeInternalIP12nsStaticAtomJS2_S2_EEEbT_DpT0_, funcdef_no=58853, decl_uid=1359814, cgraph_uid=49458, symbol_order=50647) ;; Function nsINode::IsNodeInternal<nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*> (_ZNK7nsINode14IsNodeInternalIP12nsStaticAtomJS2_S2_S2_EEEbT_DpT0_, funcdef_no=58835, decl_uid=1359727, cgraph_uid=49440, symbol_order=50629) ;; Function nsINode::IsNodeInternal<nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*> (_ZNK7nsINode14IsNodeInternalIP12nsStaticAtomJS2_S2_S2_S2_EEEbT_DpT0_, funcdef_no=58816, decl_uid=1359637, cgraph_uid=49421, symbol_order=50610) ;; Function nsINode::IsNodeInternal<nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*> (_ZNK7nsINode14IsNodeInternalIP12nsStaticAtomJS2_S2_S2_S2_S2_EEEbT_DpT0_, funcdef_no=58796, decl_uid=1359532, cgraph_uid=49401, symbol_order=50590) ;; Function nsINode::IsNodeInternal<nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*> (_ZNK7nsINode14IsNodeInternalIP12nsStaticAtomJS2_S2_S2_S2_S2_S2_EEEbT_DpT0_, funcdef_no=58774, decl_uid=1359424, cgraph_uid=49379, symbol_order=50568) ;; Function nsINode::IsNodeInternal<nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*> (_ZNK7nsINode14IsNodeInternalIP12nsStaticAtomJS2_S2_S2_S2_S2_S2_S2_EEEbT_DpT0_, funcdef_no=58751, decl_uid=1359292, cgraph_uid=49356, symbol_order=50545) ;; Function nsINode::IsNodeInternal<nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*> (_ZNK7nsINode14IsNodeInternalIP12nsStaticAtomJS2_S2_S2_S2_S2_S2_S2_S2_EEEbT_DpT0_, funcdef_no=58719, decl_uid=1359003, cgraph_uid=49324, symbol_order=50513) GCC ends up producing empty BBS with 1753608 debug statements in nsINode::IsNodeInternal<nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*, nsStaticAtom*> (const struct nsINode * const this, struct nsStaticAtom * aFirst, struct nsStaticAtom * aArgs#0, struct nsStaticAtom * aArgs#1, struct nsStaticAtom * aArgs#2, struct nsStaticAtom * aArgs#3, struct nsStaticAtom * aArgs#4, struct nsStaticAtom * aArgs#5, struct nsStaticAtom * aArgs#6, struct nsStaticAtom * aArgs#7 I did not wait for the version with 9 parameters :)