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.