[clang] [llvm] Try to use non-volatile registers for `preserve_none` parameters (PR #88333)

2025-02-07 Thread Joshua Haberman via cfe-commits
haberman wrote: Consider the case that `boring()` uses `preserve_most`: ```c __attribute__((preserve_most)) void boring(void *); __attribute__((preserve_none)) void (continuation)(void *, void *, void *, void *, void*); __attribute__((preserve_none)) void entry(void *a, void *b, void *c, void

[clang] [llvm] Try to use non-volatile registers for `preserve_none` parameters (PR #88333)

2025-02-07 Thread Joshua Haberman via cfe-commits
haberman wrote: I'm really happy to see this proposed and merged; this is how I originally envisioned it would work: https://github.com/haberman/llvm-project/commit/e8d9c75bb35ce9c802f8eac522a2c6ce003f857f https://github.com/llvm/llvm-project/pull/88333