[PATCH] D42898: Do not spill CSR to stack on entry to noreturn functions
Eli Friedman via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 8 12:54:34 PST 2018
efriedma added a comment.
Unfortunately there's still a hole in the safety analysis. Specifically, "nounwind" does not mean what you want it to mean. Consider the following testcase:
#include <setjmp.h>
void foo(void* x, int y) { longjmp(x,y); }
This compiles to a "noreturn nounwind" function, but we can't throw away callee-save register values. Granted, we probably *should* have some attribute which indicates we won't longjmp() out of a function, but that doesn't exist at the moment.
https://reviews.llvm.org/D42898
More information about the llvm-commits
mailing list