theraven added a comment. The error message here is very confusing:
/home/theraven/snmalloc2/src/mem/../ds/../aal/../ds/defines.h:122:27: error: cannot perform a tail call to function 'error' because its signature is incompatible with the calling function [[clang::musttail]] return snmalloc::error(str); ^ /home/theraven/snmalloc2/src/mem/../ds/../aal/../ds/defines.h:63:16: note: target function has different number of parameters (expected 2 but has 1) [[noreturn]] SNMALLOC_COLD void error(const char* const str); ^ /home/theraven/snmalloc2/src/mem/../ds/../aal/../ds/defines.h:21:25: note: expanded from macro 'SNMALLOC_COLD' # define SNMALLOC_COLD __attribute__((cold)) ^ /home/theraven/snmalloc2/src/mem/../ds/../aal/../ds/defines.h:122:9: note: tail call required by 'musttail' attribute here [[clang::musttail]] return snmalloc::error(str); ^ The caller and callee both have one argument, the error is because the enclosing function has two parameters. The error appears wrong anyway for two reasons in this particular context: - The callee is `[[noreturn]]`, so the stack layout doesn't make any difference, anything can be tail called if it's no-return. - The enclosing function is `always_inline`, so checking its argument-frame layout does not give useful information because it's the caller's argument-frame layout that matters. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D99517/new/ https://reviews.llvm.org/D99517 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits