summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Sparc/SparcV9CodeEmitter.h
diff options
context:
space:
mode:
authorMisha Brukman <brukman+llvm@gmail.com>2003-07-15 19:09:43 +0000
committerMisha Brukman <brukman+llvm@gmail.com>2003-07-15 19:09:43 +0000
commit384cb5dd10841a7fe69b6e490f3ba7ed4873f617 (patch)
treead7f1ac9df509561d5ceb11cb07f649fa021723e /llvm/lib/Target/Sparc/SparcV9CodeEmitter.h
parent528a37621b93c3072ecc8fa5011257d7f6535042 (diff)
downloadbcm5719-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.h2
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
OpenPOWER on IntegriCloud