r268483 - [Sparc] Implement __builtin_setjmp, __builtin_longjmp back-end.

Chris Dewhurst via cfe-commits cfe-commits at lists.llvm.org
Wed May 4 02:33:31 PDT 2016


Author: lerochris
Date: Wed May  4 04:33:30 2016
New Revision: 268483

URL: http://llvm.org/viewvc/llvm-project?rev=268483&view=rev
Log:
[Sparc] Implement __builtin_setjmp, __builtin_longjmp back-end.

This code implements builtin_setjmp and builtin_longjmp exception handling intrinsics for 32-bit Sparc back-ends.

The code started as a mash-up of the PowerPC and X86 versions, although there are sufficient differences to both that had to be made for Sparc handling.

Note: I have manual tests running. I'll work on a unit test and add that to the rest of this diff in the next day.

Also, this implementation is only for 32-bit Sparc. I haven't focussed on a 64-bit version, although I have left the code in a prepared state for implementing this, including detecting pointer size and comments indicating where I suspect there may be differences.

Differential Revision: http://reviews.llvm.org/D19798

Modified:
    cfe/trunk/lib/Basic/Targets.cpp

Modified: cfe/trunk/lib/Basic/Targets.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=268483&r1=268482&r2=268483&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/Targets.cpp (original)
+++ cfe/trunk/lib/Basic/Targets.cpp Wed May  4 04:33:30 2016
@@ -6447,6 +6447,10 @@ public:
       }
     }
   }
+
+  bool hasSjLjLowering() const override {
+    return true;
+  }
 };
 
 // SPARCV8el is the 32-bit little-endian mode selected by Triple::sparcel.




More information about the cfe-commits mailing list