[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPC32ISelLowering.cpp

Chris Lattner lattner at cs.uiuc.edu
Tue Sep 27 15:18:36 PDT 2005



Changes in directory llvm/lib/Target/PowerPC:

PPC32ISelLowering.cpp updated: 1.25 -> 1.26
---
Log message:

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.


---
Diffs of the changes:  (+3 -0)

 PPC32ISelLowering.cpp |    3 +++
 1 files changed, 3 insertions(+)


Index: llvm/lib/Target/PowerPC/PPC32ISelLowering.cpp
diff -u llvm/lib/Target/PowerPC/PPC32ISelLowering.cpp:1.25 llvm/lib/Target/PowerPC/PPC32ISelLowering.cpp:1.26
--- llvm/lib/Target/PowerPC/PPC32ISelLowering.cpp:1.25	Tue Sep 13 14:33:40 2005
+++ llvm/lib/Target/PowerPC/PPC32ISelLowering.cpp	Tue Sep 27 17:18:25 2005
@@ -28,6 +28,9 @@
   // 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);






More information about the llvm-commits mailing list