HomePhabricator

Add Windows support for the GNUstep Objective-C ABI V2.

Description

Add Windows support for the GNUstep Objective-C ABI V2.

Summary:
Introduces funclet-based unwinding for Objective-C and fixes an issue
where global blocks can't have their isa pointers initialised on
Windows.

After discussion with Dustin, this changes the name mangling of
Objective-C types to prevent a C++ catch statement of type struct X*
from catching an Objective-C object of type X*.

Reviewers: rjmccall, DHowett-MSFT

Reviewed By: rjmccall, DHowett-MSFT

Subscribers: mgrang, mstorsjo, smeenai, cfe-commits

Differential Revision: https://reviews.llvm.org/D50144

Details

Event Timeline

@theraven We're seeing a test failure in CodeGenObjC/2007-04-03-ObjcEH.m which seems to be from this commit:

http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/11711/steps/test-check-all/logs/stdio

Can't mangle Objective-C selector names here!
UNREACHABLE executed at C:\ps4-buildslave2\llvm-clang-x86_64-expensive-checks-win\llvm\tools\clang\lib\AST\MicrosoftMangle.cpp:909!