diff options
| author | Misha Brukman <brukman+llvm@gmail.com> | 2003-07-15 19:09:43 +0000 |
|---|---|---|
| committer | Misha Brukman <brukman+llvm@gmail.com> | 2003-07-15 19:09:43 +0000 |
| commit | 384cb5dd10841a7fe69b6e490f3ba7ed4873f617 (patch) | |
| tree | ad7f1ac9df509561d5ceb11cb07f649fa021723e /llvm/lib/Target/Sparc/SparcV9CodeEmitter.h | |
| parent | 528a37621b93c3072ecc8fa5011257d7f6535042 (diff) | |
| download | bcm5719-llvm-384cb5dd10841a7fe69b6e490f3ba7ed4873f617.tar.gz bcm5719-llvm-384cb5dd10841a7fe69b6e490f3ba7ed4873f617.zip | |
Correctly handle calls to functions which are further away than 2**32 bits will
allow, i.e. make a sequence of instructions to enable an indirect call using
jump-and-link and 2 temporary registers (which we save and ultimately restore).
Warning: if the delay slot of a function call is used to do meaningful work and
not just a NOP, this behavior is incorrect. However, the Sparc backend does not
yet utilize the delay slots effectively, so it is not necessary to make an
overly complicated algorithm for something that's not used.
llvm-svn: 7178
Diffstat (limited to 'llvm/lib/Target/Sparc/SparcV9CodeEmitter.h')
| -rw-r--r-- | llvm/lib/Target/Sparc/SparcV9CodeEmitter.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Target/Sparc/SparcV9CodeEmitter.h b/llvm/lib/Target/Sparc/SparcV9CodeEmitter.h index 86f74c14c83..ca365d06848 100644 --- a/llvm/lib/Target/Sparc/SparcV9CodeEmitter.h +++ b/llvm/lib/Target/Sparc/SparcV9CodeEmitter.h @@ -49,6 +49,8 @@ private: bool isPCRelative); bool isFPInstr(MachineInstr &MI); unsigned getRealRegNum(unsigned fakeReg, MachineInstr &MI); + inline void emitFarCall(uint64_t Addr); + }; #endif |

