diff options
| author | Chris Lattner <sabre@nondot.org> | 2005-09-27 22:18:25 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2005-09-27 22:18:25 +0000 |
| commit | a028e7a39c986845f216f652e1bb28fdfc81e5f7 (patch) | |
| tree | 1f617d5cb87e4d16b421ca763e3aa9ed5674a050 /llvm/lib/Target/PowerPC/PPCISelLowering.cpp | |
| parent | 0fd8f9fbc9bf287d0052af7721348ce40bfbe9e0 (diff) | |
| download | bcm5719-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/PPCISelLowering.cpp')
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPCISelLowering.cpp | 3 |
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); |

