aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Support/VirtualFileSystem.cpp
diff options
context:
space:
mode:
authorPhilip Reames <listmail@philipreames.com>2021-02-01 16:07:01 -0800
committerPhilip Reames <listmail@philipreames.com>2021-02-01 16:19:14 -0800
commit46e764a628da81795af3f64bd28970b7bd4115d6 (patch)
tree131d00c60f8bd52ad2ed6e078d9fdd3689b4040a /llvm/lib/Support/VirtualFileSystem.cpp
parentfbd55071788a3e57d2fdf8cad5c79ee45a273019 (diff)
downloadllvm-46e764a628da81795af3f64bd28970b7bd4115d6.zip
llvm-46e764a628da81795af3f64bd28970b7bd4115d6.tar.gz
llvm-46e764a628da81795af3f64bd28970b7bd4115d6.tar.bz2
[x86] introduce no_callee_saved_registers attribute
This is directly analogous to the existing no_caller_saved_registers, but with the opposite intention. A function or call so marked shifts the responsibility of spilling the usual CSRs to it's caller. An indirect call site and callee which don't agree on the attribute is ill defined. The motivation for this change is that being able to prune callee saves (without modifying other details of the calling convention) is sometimes useful when generating stubs and adapters. There's no intention to expose this as a source language feature; this is expected to be used by frontends to implement adapters where warranted. Some specific examples of use cases: * GC compatible compiled code wants to call an externally defined library function without needing to track pointer values through CSRs. * debug enabled code wants to call precompiled library which doesn't provide enough information to track CSRs while preserving debug quality in caller. * adapter stub entering hand written assembler which doesn't follow normal calling conventions.
Diffstat (limited to 'llvm/lib/Support/VirtualFileSystem.cpp')
0 files changed, 0 insertions, 0 deletions