Ubsan does not emit a bounds check when accessing flexible array members in C-style structs, e.g:
struct Foo { char arr[0]; }; char bar(struct Foo *F) { return F->arr[1]; } //< Unchecked access.
Teach ubsan to skip the bounds check for flexible array ObjC ivars as well.
This reduces the false-positive rate when instrumenting Objective-C frameworks.
A note on testing: it looks like runnable ubsan tests are typically added to compiler-rt. I chose to create a test in clang instead, because I don't want to make the ubsan tests depend on libobjc.