Skip to content

Commit 6b885c3

Browse files
authored
RuntimeLibcalls: Make sure _Unwind_Resume entries are mutually exclusive (#164195)
1 parent 57ba58d commit 6b885c3

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

llvm/include/llvm/IR/RuntimeLibcalls.td

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,11 @@ def ExceptionModelIsNotNone : RuntimeLibcallPredicate<
5959
[{ExceptionModel != ExceptionHandling::None}]
6060
>;
6161

62+
def ExceptionModelHasUnwindResume : RuntimeLibcallPredicate<
63+
[{ExceptionModel != ExceptionHandling::None &&
64+
ExceptionModel != ExceptionHandling::SjLj}]
65+
>;
66+
6267
def ExceptionModelIsSjLj : RuntimeLibcallPredicate<
6368
[{ExceptionModel == ExceptionHandling::SjLj}]
6469
>;
@@ -1153,8 +1158,10 @@ def __ssp_canary_word : RuntimeLibcallImpl<STACK_CHECK_GUARD>;
11531158
//===----------------------------------------------------------------------===//
11541159

11551160
defvar ExceptionModelCalls = (add
1156-
LibcallImpls<(add DefaultExceptionHandlingLibcalls),
1161+
LibcallImpls<(add __cxa_end_cleanup),
11571162
ExceptionModelIsNotNone>,
1163+
LibcallImpls<(add _Unwind_Resume),
1164+
ExceptionModelHasUnwindResume>,
11581165
LibcallImpls<(add SjLjExceptionHandlingLibcalls),
11591166
ExceptionModelIsSjLj>
11601167
);
@@ -1396,8 +1403,10 @@ defset list<RuntimeLibcallImpl> WinArm64ECSjLjExceptionHandlingLibcalls = {
13961403
}
13971404

13981405
defvar ExceptionModelCallsArm64EC = (add
1399-
LibcallImpls<(add WinArm64ECDefaultExceptionHandlingLibcalls),
1406+
LibcallImpls<(add arm64ec___cxa_end_cleanup),
14001407
ExceptionModelIsNotNone>,
1408+
LibcallImpls<(add arm64ec__Unwind_Resume),
1409+
ExceptionModelHasUnwindResume>,
14011410
LibcallImpls<(add WinArm64ECSjLjExceptionHandlingLibcalls),
14021411
ExceptionModelIsSjLj>
14031412
);

0 commit comments

Comments
 (0)