diff options
author | David Blaikie <dblaikie@gmail.com> | 2022-09-08 20:22:39 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2022-10-04 20:19:17 +0000 |
commit | 4769976c49be468d7629d513080e6959a25adcfe (patch) | |
tree | 0ce3919d3cf6560e736ce3dad76baf1d1d88da97 /llvm/lib/Transforms/Utils/LoopVersioning.cpp | |
parent | cf43154bc37540f32d0a345b7d5aa99d21f73cee (diff) | |
download | llvm-4769976c49be468d7629d513080e6959a25adcfe.zip llvm-4769976c49be468d7629d513080e6959a25adcfe.tar.gz llvm-4769976c49be468d7629d513080e6959a25adcfe.tar.bz2 |
MSVC ABI: Looks like even non-aarch64 uses the MSVC/14 definition for pod/aggregate passing
Details posted here: https://reviews.llvm.org/D119051#3747201
3 cases that were inconsistent with the MSABI without this patch applied:
https://godbolt.org/z/GY48qxh3G - field with protected member
https://godbolt.org/z/Mb1PYhjrP - non-static data member initializer
https://godbolt.org/z/sGvxcEPjo - defaulted copy constructor
I'm not sure what's suitable/sufficient testing for this - I did verify
the three cases above. Though if it helps to add them as explicit tests,
I can do that too.
Also, I was wondering if the other use of isTrivialForAArch64MSVC in
isPermittedToBeHomogenousAggregate could be another source of bugs - I
tried changing the function to unconditionally call
isTrivialFor(AArch64)MSVC without testing AArch64 first, but no tests
fail, so it looks like this is undertested in any case. But I had
trouble figuring out how to exercise this functionality properly to add
test coverage and then compare that to MSVC itself... - I got very
confused/turned around trying to test this, so I've given up enough to
send what I have out for review, but happy to look further into this
with help.
Differential Revision: https://reviews.llvm.org/D133817
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopVersioning.cpp')
0 files changed, 0 insertions, 0 deletions