Fix a couple of things that were causing stack protection to not work correctly in functions that have scalable vectors on the stack:
- Fix an assertion failure in the StackProtector pass caused by trying to call getTypeAllocSize on a scalable vector.
- When stack protection is enabled move the stack protector location to the top of the SVE locals, so that any overflow in them (or the other locals which are below that) will be detected.
Fixes PR51795.
Do we need to some way to ensure that the LocalStackSlotAllocationPass doesn't pre-allocate the stack protector value if we know it will be allocated to a different StackID?