This change teaches the Sema logic for __builtin_memcpy_inline to implicitly convert arrays passed as arguments to pointers, similarly to regular memcpy.
This code will no longer cause a compiler crash:
void f(char *p) {
char s[1] = {0};
__builtin_memcpy_inline(p, s, 1);
}rdar://88147527
[nit] It's unclear looking at the function name that it's failing when returning true - one has to read the code to understand. It may be fine now but could become messy with time and refactoring.
Either change the lambda's name FailArgArrayConversion or negate everything.