diff options
author | David Blaikie <dblaikie@gmail.com> | 2022-09-23 23:32:05 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2022-10-04 20:17:29 +0000 |
commit | 2e1c1d6d72879cafc339ad035b1b5a6d1c8cc130 (patch) | |
tree | 9477ab8b1f171ae523931a7edc5c1553a718befb /llvm/lib/Transforms/Utils/LoopVersioning.cpp | |
parent | 77945a344c3dee3f9735744c8d4151ef2cec6a8d (diff) | |
download | llvm-2e1c1d6d72879cafc339ad035b1b5a6d1c8cc130.zip llvm-2e1c1d6d72879cafc339ad035b1b5a6d1c8cc130.tar.gz llvm-2e1c1d6d72879cafc339ad035b1b5a6d1c8cc130.tar.bz2 |
MSVC AArch64 ABI: Homogeneous aggregates
Fixes:
Protected members, HFA: https://godbolt.org/z/zqdK7vdKc
Private members, HFA: https://godbolt.org/z/zqdK7vdKc
Non-empty base, HFA: https://godbolt.org/z/PKTz59Wev
User-provided ctor, HFA: https://godbolt.org/z/sfrTddcW6
Existing correct cases:
Empty base class, NonHFA: https://godbolt.org/z/4veY9MWP3
- correct by accident of not allowing bases at all (see non-empty base
case/fix above for counterexample)
Polymorphic: NonHFA: https://godbolt.org/z/4veY9MWP3
Trivial copy assignment, HFA: https://godbolt.org/z/Tdecj836P
Non-trivial copy assignment, NonHFA: https://godbolt.org/z/7c4bE9Whq
Non-trivial default ctor, NonHFA: https://godbolt.org/z/Tsq1EE7b7
- correct by accident of disallowing all user-provided ctors (see
user-provided non-default ctor example above for counterexample)
Trivial dtor, HFA: https://godbolt.org/z/nae999aqz
Non-trivial dtor, NonHFA: https://godbolt.org/z/69oMcshb1
Empty field, NonHFA: https://godbolt.org/z/8PTxsKKMK
- true due to checking for the absence of padding (see comment in code)
After a bunch of testing, this fixes a bunch of cases that were
incorrect. Some of the tests verify the nuances of the existing
behavior/code checks that were already present.
This was mostly motivated by cleanup from/in D133817 which itself was
motivated by D119051.
By removing the incorrect use of isTrivialForAArch64MSVC here & adding
more nuance to the homogeneous testing we can more safely/confidently
make changes to the isTrivialFor(AArch64)MSVC to more properly align
with its usage anyway.
Differential Revision: https://reviews.llvm.org/D134688
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopVersioning.cpp')
0 files changed, 0 insertions, 0 deletions