aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp
diff options
context:
space:
mode:
authorSean Perry <perry@ca.ibm.com>2025-01-17 11:14:50 -0500
committerGitHub <noreply@github.com>2025-01-17 11:14:50 -0500
commit89305c371552adba2bd10394d2c645c9792840b2 (patch)
tree19595ae799173c3347f9c5e8a736212a1f0441dc /llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp
parent71ad9a958ac192599a46d86724a8084c8c4aff1c (diff)
downloadllvm-89305c371552adba2bd10394d2c645c9792840b2.zip
llvm-89305c371552adba2bd10394d2c645c9792840b2.tar.gz
llvm-89305c371552adba2bd10394d2c645c9792840b2.tar.bz2
[z/OS] add tail padding to TypeLoc if needed (#122761)
The code in getLocalDataSize() returns the sum of the size of the LocalData plus the size of the extra data. The start of the extra data is padded so it starts on a multiple of it's alignment. We also need to be adding tail padding so the final size is a multiple of the alignment of the LocalData. On most systems the alignment of the extra data is the same or greater than the alignment of the LocalData so you don't need the tail padding. However, on z/OS, the alignment of the extra data is less than the alignment of the LocalData and thus you do need the tail padding to make the final size a multiple of the LocalData alignment. The extra data is the WrittenBuiltinSpecs struct. This struct is just a struct of bitfields. On most systems the alignment of the struct is determined by the type of the bitfields (eg. unsigned int -> align of 4). On z/OS, all bitfields are 1 byte aligned. Thus on z/OS WrittenBuiltinSpecs is only size 2 with alignment of 1 (verses 4 & 4).
Diffstat (limited to 'llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp')
0 files changed, 0 insertions, 0 deletions