This is an archive of the discontinued LLVM Phabricator instance.

[clang] [MinGW] Use SEH for unwind info on ARM by default
ClosedPublic

Authored by mstorsjo on Jun 2 2022, 2:55 AM.

Diff Detail

Event Timeline

mstorsjo created this revision.Jun 2 2022, 2:55 AM
Herald added a project: Restricted Project. · View Herald TranscriptJun 2 2022, 2:55 AM
mstorsjo requested review of this revision.Jun 2 2022, 2:55 AM
Herald added a project: Restricted Project. · View Herald TranscriptJun 2 2022, 2:55 AM
Herald added a subscriber: MaskRay. · View Herald Transcript
This revision is now accepted and ready to land.Jun 6 2022, 10:50 AM
MaskRay accepted this revision.Jun 6 2022, 10:51 AM

Oh, just remembered, we should probably release-note this. (You can post that as a followup.)

mstorsjo added a comment.EditedJun 6 2022, 11:40 AM

Oh, just remembered, we should probably release-note this. (You can post that as a followup.)

Sure, can do.

Btw, thanks a lot for your reviews, you've spent a lot of time on them! They did improve the end result a lot, and your pointers to e.g. specific passes that do things was very valuable - that's something that is hard to figure ouy by just grepping around in the code.

Also regarding announcing completion - at this point, the unwind info generation is complete, and itanium style unwinding works. But for MSVC style (C++ exceptions and __try/__except) there's still a couple backend things that need to be implemented. Do you happen to know roughly how much effort that is? I've essentially achieved what I wanted here, but it would be nice just for completeness to have those parts implemented too, but it's a lower priority for me.

Btw, thanks a lot for your reviews, you've spent a lot of time on them!

You're welcome.

But for MSVC style (C++ exceptions and try/except) there's still a couple backend things that need to be implemented. Do you happen to know roughly how much effort that is?

Getting funclets working is a significant amount of code; see D51524 .

Beyond that, it's not that much work, I think? There's probably some random little bits I'm not remembering, but most of the code is shared across x64/aarch64/arm, I think.

But for MSVC style (C++ exceptions and try/except) there's still a couple backend things that need to be implemented. Do you happen to know roughly how much effort that is?

Getting funclets working is a significant amount of code; see D51524 .

Yikes - ok, thanks, that's good to know. Are funclets also needed for __try/__except?

Funclets are necessary for both C++ and SEH exception handling, yes.

This revision was landed with ongoing or failed builds.Jun 6 2022, 1:28 PM
This revision was automatically updated to reflect the committed changes.