This patch:
- introduces a new TII API for calculating the address of a memory operation in complex addressing mode. This is a general function, which checks for both bas and index registers. This is used in isSuitableMemoryOp in ImplicitNullChecks and all the validity checks are done in this caller function. Earlier, we used to bail out if the memory operation had an index register or a scale != 1 (i.e. we supported offsets with simple addressing mode).
- handles memory accesses (and makes the null checks implicit) where the faulting page is a non-zero one as
specified through a named module level metadata startaddress_faulting_pages introduced in this patch. The optional metadata is added by front-ends.
See #2 in action with added MIR tests for positive and negative case. #1
allows us to handle a case which was not handled earlier (see
implicit-null-checks.ll).
"is an instruction"