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 | d145a61f8f581cfe7dc7abb023a3b1ab534606c7 (patch) | |
tree | 19ace14146ae22aadf73c436be1e1df49d814f22 | |
parent | 6c38b33613d64522581dc55d82fffa4aee0e9f22 (diff) | |
download | external_llvm-d145a61f8f581cfe7dc7abb023a3b1ab534606c7.zip external_llvm-d145a61f8f581cfe7dc7abb023a3b1ab534606c7.tar.gz external_llvm-d145a61f8f581cfe7dc7abb023a3b1ab534606c7.tar.bz2 |
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23482 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/PowerPC/PPCISelLowering.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/Target/PowerPC/PPCISelLowering.cpp b/lib/Target/PowerPC/PPCISelLowering.cpp index a6831b0..f3b7f64 100644 --- a/lib/Target/PowerPC/PPCISelLowering.cpp +++ b/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); |