mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-10-05 01:49:02 +00:00
65f6d2aa67
We have run into an issue with some Intel compilers where if a `union` contains a `struct` that has some padding for byte alignment, the value copy might skip over that padding even when the `union` contains a different type where those bytes are valid. This breaks the value copy of our `Variant` class. This is not a unique problem. We have seen the same thing in other compilers and already have a workaround for when this happens. The workaround creates a special struct that has no padding placed at the front of the `union`. The Intel compiler adds a fun twist in that this placeholder structure only works if the alignment is at least as high as the struct that follows it. To get around this problem, make the alignment of the placeholder `struct` at large as possible for the size of the `union`. It was taking too long to compile with a device. Redesign the placeholder to be simpler and compile faster. |
||
---|---|---|
.. | ||
.gitattributes | ||
ArrayPortalBasic.h | ||
ArrayPortalDummy.h | ||
ArrayPortalHelpers.h | ||
ArrayPortalUniformPointCoordinates.h | ||
ArrayPortalValueReference.h | ||
Assume.h | ||
CMakeLists.txt | ||
Configure.h.in | ||
ConfigureFor32.h | ||
ConfigureFor64.h | ||
ConnectivityStructuredInternals.h | ||
DecayHelpers.h | ||
ExportMacros.h | ||
FunctionInterface.h | ||
FunctionInterfaceDetailPost.h | ||
FunctionInterfaceDetailPost.h.in | ||
FunctionInterfaceDetailPre.h | ||
FunctionInterfaceDetailPre.h.in | ||
IndexTag.h | ||
IndicesExtrude.h | ||
Instantiations.h | ||
Invocation.h | ||
Meta.h | ||
Unreachable.h | ||
VariantImpl.h | ||
VariantImplDetail.h | ||
VariantImplDetail.h.in | ||
VecOperators.h | ||
VecOperators.h.in | ||
Windows.h |