summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/PowerPC
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-09-27 22:18:25 +0000
committerChris Lattner <sabre@nondot.org>2005-09-27 22:18:25 +0000
commita028e7a39c986845f216f652e1bb28fdfc81e5f7 (patch)
tree1f617d5cb87e4d16b421ca763e3aa9ed5674a050 /llvm/lib/Target/PowerPC
parent0fd8f9fbc9bf287d0052af7721348ce40bfbe9e0 (diff)
downloadbcm5719-llvm-a028e7a39c986845f216f652e1bb28fdfc81e5f7.tar.gz
bcm5719-llvm-a028e7a39c986845f216f652e1bb28fdfc81e5f7.zip
Darwin, like many BSD systems, has a setjmp/longjmp which saves the signal mask
on setjmp calls and restores it on longjmp calls (both of which require syscalls). This makes the calls REALLY slow. Use _setjmp/_longjmp instead. This speeds up hexxagon from 120.31s to 15.68s: from 5.53x slower than GCC to 28% faster than GCC. llvm-svn: 23482
Diffstat (limited to 'llvm/lib/Target/PowerPC')
-rw-r--r--llvm/lib/Target/PowerPC/PPCISelLowering.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
index a6831b024f6..f3b7f64f191 100644
--- a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+++ b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
@@ -28,6 +28,9 @@ PPC32TargetLowering::PPC32TargetLowering(TargetMachine &TM)
// Fold away setcc operations if possible.
setSetCCIsExpensive();
+ // Use _setjmp/_longjmp instead of setjmp/longjmp.
+ setUseUnderscoreSetJmpLongJmp(true);
+
// Set up the register classes.
addRegisterClass(MVT::i32, PPC32::GPRCRegisterClass);
addRegisterClass(MVT::f32, PPC32::FPRCRegisterClass);
OpenPOWER on IntegriCloud