Compiler-rt miscalculates the number of entries in the __llvm_prf_data section on i386 Darwin. This results in a number of test failures (which we started catching after r261344).
The fix we attempted earlier is insufficient (r261683). It caused some tests to start passing again, but that hid the fact that we drop data entries.
This patch should fix the real problem. It fixes the way we compute DataSize by taking into account the way the Darwin linker lays out __llvm_prf_data.
Probably just
EndI = (llvm_profile_data *) ((intptr_t)End + sizeof(llvm_profile_data) -1);
return EndI - Begin;