[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