diff options
author | Chris Dewhurst <chris.dewhurst@lero.ie> | 2016-05-04 09:33:30 +0000 |
---|---|---|
committer | Chris Dewhurst <chris.dewhurst@lero.ie> | 2016-05-04 09:33:30 +0000 |
commit | 69fa1926dbbfe0e1238a287f59d7f363e062f87b (patch) | |
tree | 2652c0b401f22e0764b95fedc76524c76e976d69 /clang/lib | |
parent | 04468f291456533fe85a0a30755a01b7d3087f58 (diff) | |
download | bcm5719-llvm-69fa1926dbbfe0e1238a287f59d7f363e062f87b.tar.gz bcm5719-llvm-69fa1926dbbfe0e1238a287f59d7f363e062f87b.zip |
[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
llvm-svn: 268483
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 1df35ab8465..6b26d14dc5a 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -6447,6 +6447,10 @@ public: } } } + + bool hasSjLjLowering() const override { + return true; + } }; // SPARCV8el is the 32-bit little-endian mode selected by Triple::sparcel. |