https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96680
--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> --- In the debugger, the first call to lto_fixup_prevailing_decls is for main._omp_fn.0 and the second - and failing - one is for (gdb) p debug_tree(t) <tree_list 0x7ffff73d2cf8 purpose <function_decl 0x7ffff73d3a00 p_fn at the end, it fails for else { switch (code) { case TREE_LIST: LTO_SET_PREVAIL (TREE_VALUE (t)); LTO_SET_PREVAIL (TREE_PURPOSE (t)); LTO_NO_PREVAIL (TREE_PURPOSE (t)); break; in the call to 2595 LTO_NO_PREVAIL (TREE_PURPOSE (t)); And that's the following (I assume 'of' is 'or'): /* Ensure that TT isn't a replacable var of function decl. */ #define LTO_NO_PREVAIL(tt) \ gcc_checking_assert (!(tt) || !VAR_OR_FUNCTION_DECL_P (tt))