mirror of
https://github.com/RPCSX/llvm.git
synced 2025-03-03 02:17:41 +00:00
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
This commit is contained in:
parent
6c38b33613
commit
d145a61f8f
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user