[LLVMdev] adding support for -ffixed-<reg>
Matthew Curtis
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/
>> Code-Gen-Options.html#index-ffixed-2267)
>>
>> -ffixed-reg
>>
>> 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 [1]? 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.
>
> Regards,
> chenwj
>
> [1] 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
function definitions.[1]
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).
Cheers,
Matthew C.
[1]
http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Global-Reg-Vars.html#Global-Reg-Vars
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
More information about the llvm-dev
mailing list