23 Commits

Author SHA1 Message Date
Jim Grosbach
4643e96d36 Move the sjlj exception handling conversions to a back-end pass where they
more properly belong. This allows removing the front-end conditionalized
SJLJ code, and cleans up the generated IR considerably. All of the
infrastructure code (calling _Unwind_SjLj_Register/Unregister, etc) is
added by the SjLjEHPrepare pass.

llvm-svn: 79250
2009-08-17 16:41:22 +00:00
Jim Grosbach
74c682dde4 Add catch block handling to SjLj exception handling.
llvm-svn: 78817
2009-08-12 17:38:44 +00:00
Jim Grosbach
c9a1dd9291 SjLj based exception handling unwinding support. This patch is nasty, brutish
and short. Well, it's kinda short. Definitely nasty and brutish.

The front-end generates the register/unregister calls into the SjLj runtime,
call-site indices and landing pad dispatch. The back end fills in the LSDA
with the call-site information provided by the front end. Catch blocks are
not yet implemented.

Built on Darwin and verified no llvm-core "make check" regressions.

llvm-svn: 78625
2009-08-11 00:09:57 +00:00
Chris Lattner
6f4a366e35 convert EHFrameSection to be managed by TLOF instead of TAI.
llvm-svn: 77888
2009-08-02 06:52:36 +00:00
Chris Lattner
adebb48d1a Fix some fixme's in #if 0'd code by making it dependent on the structural
behavior of the LSDA section instead of on some random target hook that
needs to be kept in synch with other points of truth.

llvm-svn: 77855
2009-08-02 03:59:56 +00:00
Chris Lattner
1c44a63eba move getDwarfExceptionSection from TAI to TLOF and rename it to
getLSDASection() to be more specific.  This makes it pretty obvious
that the ELF LSDA section is being specified wrong in PIC mode.  We're
probably getting a lot of startup-time relocations to a readonly page,
which is expensive and bad.

Someone who cares about ELF C++ should investigate this.

llvm-svn: 77847
2009-08-02 01:34:32 +00:00
Chris Lattner
e84531b18d add some comments on how this is *supposed* to work. We don't
need the PreferredEHDataFormat hook, but I have yet-more refactoring to
do before I can zap it.

llvm-svn: 77742
2009-07-31 22:18:14 +00:00
Chris Lattner
907f114dd3 rearrange a conditional. Even if this weren't #if 0'd out, this would
have no functionality change.

llvm-svn: 77741
2009-07-31 22:03:47 +00:00
Chris Lattner
882b1208e1 PreferredEHDataFormat is always call with data and global, but this whole
thing is #if0'd out anyway.  Just simplify the code by reducing the interface.
Not deleting this is essential for Bill's continuing happiness.

llvm-svn: 77736
2009-07-31 21:39:55 +00:00
Bill Wendling
67495ad58d Forgot to output the base offset.
llvm-svn: 77505
2009-07-29 21:19:44 +00:00
Bill Wendling
63e2e5f961 Move comment to above method.
llvm-svn: 77412
2009-07-29 00:50:05 +00:00
Bill Wendling
067f40533e - Temporarily unbreak the build by forcing the TType "absptr", which isn't
correct. But what are you going to do? I'll fix this in the future.
- Move another large loop into its own method.

llvm-svn: 77408
2009-07-29 00:31:35 +00:00
Bill Wendling
542faaa8f1 Cleanup code to use iterators instead of ".size()".
Does any one else hate the name "const_reverse_iterator" as much as I do?

llvm-svn: 77399
2009-07-28 23:44:43 +00:00
Bill Wendling
3c423d6937 Doxygenify comments.
llvm-svn: 77394
2009-07-28 23:23:00 +00:00
Bill Wendling
4aca242899 Split out large loop into it's very own method. No intended functionality change.
llvm-svn: 77393
2009-07-28 23:22:13 +00:00
Bill Wendling
e3f9b54a39 Output the EH TType format and base offset only if there are types that we're
going to emit.

llvm-svn: 77382
2009-07-28 22:23:45 +00:00
Bill Wendling
2c464b4a80 Use the preferred EH data format for the preferred EH data format.
llvm-svn: 77373
2009-07-28 21:54:03 +00:00
Chris Lattner
eac40b1473 implement a new magic global "llvm.compiler.used" which is like llvm.used, but
doesn't cause ".no_dead_strip" to be emitted on darwin.

llvm-svn: 76399
2009-07-20 06:14:25 +00:00
Chris Lattner
e824b863e5 Use more terse and precise linkage checks.
llvm-svn: 76237
2009-07-17 21:00:50 +00:00
Chris Lattner
b6cede976e these two pieces of code are the same because we always
emit the EHFrame label next to the section_eh_frame and
eh_frame_common labels.

llvm-svn: 76234
2009-07-17 20:53:51 +00:00
Chris Lattner
ffe0c407be Untangle a snarl that I discovered when updating the mangler,
starting in getCurrentFunctionEHName.  Among other problems,
we would try to privative a "foo.eh" label, but end up emitting
the label as _Lfoo.eh instead of L_foo.eh on darwin.  This is really
bad, and the linker has always tolerated these labels existing.
For now, just emit them as _foo.eh.

This patch also fixes problems with ".eh" labels on unnamed
functions and eliminates two strangely defined TargetAsmInfo
hooks.

llvm-svn: 76231
2009-07-17 20:46:40 +00:00
Bill Wendling
8d9aae8003 Move c'tor/d'tor to top of file.
llvm-svn: 71828
2009-05-15 01:18:50 +00:00
Bill Wendling
cec6308edc Split out the DwarfException class into its own file. No functionality change,
though the classes have been marked with "VISIBILITY_HIDDEN".

llvm-svn: 71827
2009-05-15 01:12:28 +00:00