[LLVMdev] adding support for -ffixed-<reg>
mcurtis at codeaurora.org
Tue Oct 2 08:59:53 PDT 2012
On 10/2/2012 10:14 AM, 陳韋任 (Wei-Ren Chen) wrote:
>> From the GCC manual (http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/
>> Treat the register named reg as a fixed register; generated code should
>> never refer to it (except perhaps as a stack pointer, frame pointer or in
>> some other fixed role).
>> reg must be the name of a register. The register names accepted are
>> machine-specific and are defined in the REGISTER_NAMES macro in the machine
>> description macro file.
>> Useful when writing kernel code or other low-level code (e.g. a VM) where you
>> want to reserve a particular register for your own use.
> Ya, I saw people writing VM often ask for this functionality on ML.
> But I have a question, what the difference between this and global
> register ? To me, they both seems to reserve particular register
> from being used by the compiler. If they're the same, I remember Chris
> objected to add global register feature in LLVM.
>  http://nondot.org/sabre/LLVMNotes/GlobalRegisterVariables.txt
From my understanding ...
The two features are often used together. -ffixed-reg must usually be
passed to other compilation units in a program that don't actually use a
given global register, or to ensure that it is not used by preceding
Global registers imply some level of language/IR support.
In the absence of global register support, use of the register must be
written outside of the compiler (e.g. in assembly).
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
More information about the llvm-dev