Details
Diff Detail
Event Timeline
@t.p.northover should absolutely look at this. The problem here is that the MCAsmInfo is sometimes not set up early enough which results in the exception model not being correct. We need to wire this up better so that the information is not pulled from MCAsmInfo but passed through properly.
Reverted most of the logic back to the original form, but added a check of Options.ExceptionModel instead (which afaik always is available). If this is set to SjLj, we override UseSjLjEH, and if getMCAsmInfo() is available we verify that it matches just like before.
lib/Target/ARM/ARMSubtarget.cpp | ||
---|---|---|
153–154 | I think that I would prefer: UsesSjLjEH = (isTargetDarwin() && !isTargetWatchABI()) || Options.ExceptionModel == ExceptionHandling::SjLj; |
lib/Target/ARM/ARMSubtarget.cpp | ||
---|---|---|
153–154 | Sounds good. Or perhaps even UsesSjLjEH = (isTargetDarwin() && !isTargetWatchABI() && Options.ExceptionModel == ExceptionHandling::None) || Options.ExceptionModel == ExceptionHandling::SjLj; to allow disabling it on iOS as well. |
I think that I would prefer: