Also, tweak the application of LLVM_ENABLE_ABI_BREAKING_CHECKS so that a stray setChecked(false) call won't actually break ABI. And make sure the death tests don't run under NDEBUG.
Where does the stray 'setChecked(false)' happen?
I think I took the guards off this to make sure that Errors generated and checked in release mode code would not appear as "unchecked" to an app built in debug mode.
Sounds like you are hitting the opposite issue?
Oh, this wasn't actually necessary; it was just in case someone actually did use setChecked(false). Since getPtr unconditionally does the masking, you'd never actually be able to tell anyway, so I figured it was better to have it optimize away. I'm happy to put it back.