vtk-m/vtkm/internal
Kenneth Moreland 65f6d2aa67 Fix issue with union placeholder on Intel compiler
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.
2023-09-26 07:25:25 -04:00
..
.gitattributes clang-format: apply to the entire tree 2017-05-25 07:51:37 -04:00
ArrayPortalBasic.h Replace basic ArrayHandle implementation to use Buffers 2020-06-25 14:02:26 -06:00
ArrayPortalDummy.h Add standard support for read-only storage 2020-12-10 13:39:28 -07:00
ArrayPortalHelpers.h Properly handle Get(Id3) in ArrayPortalCheck 2020-03-18 10:51:20 -06:00
ArrayPortalUniformPointCoordinates.h Update ArrayHandleImplicit to new array style with Buffer 2020-10-21 08:36:29 -06:00
ArrayPortalValueReference.h Implement VecTraits class for all types 2023-03-16 12:59:38 -06:00
Assume.h clang-format: reformat the repository with clang-format-9 2020-08-24 14:01:08 -04:00
CMakeLists.txt diy,mpi: Enable GPU AWARE MPI buffers 2023-05-30 12:13:03 -04:00
Configure.h.in diy,mpi: Enable GPU AWARE MPI buffers 2023-05-30 12:13:03 -04:00
ConfigureFor32.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ConfigureFor64.h conslidate the license statement 2019-04-17 10:57:13 -06:00
ConnectivityStructuredInternals.h Rename structured connectivity index conversion methods 2023-06-02 15:31:24 -04:00
DecayHelpers.h Make Tuple class 2020-03-16 17:12:16 -06:00
ExportMacros.h CI: Remove warnings of CUDA & use attributes 2021-08-12 19:20:02 -04:00
FunctionInterface.h Suppress bad deprecation warnings in MSVC 2020-07-14 16:25:04 -06:00
FunctionInterfaceDetailPost.h Simplify FunctionInterface 2019-12-02 09:33:35 -05:00
FunctionInterfaceDetailPost.h.in Simplify FunctionInterface 2019-12-02 09:33:35 -05:00
FunctionInterfaceDetailPre.h Remove brigand from FunctionInterface 2022-03-08 07:25:08 -07:00
FunctionInterfaceDetailPre.h.in Remove brigand from FunctionInterface 2022-03-08 07:25:08 -07:00
IndexTag.h conslidate the license statement 2019-04-17 10:57:13 -06:00
IndicesExtrude.h Update VTK-m code to use new Vec aliases 2019-07-31 12:55:40 -06:00
Instantiations.h Update vtkm_add_instantiations documentation 2022-03-23 06:34:05 -06:00
Invocation.h Correct warnings found with CUDA 10.2 + gcc 4.8.5 2020-02-26 15:16:35 -05:00
Meta.h Enable predicate parameter to ListAll and ListAny 2022-03-08 09:26:35 -07:00
Unreachable.h clang-format: reformat the repository with clang-format-9 2020-08-24 14:01:08 -04:00
VariantImpl.h Remove deprecated features from VTK-m 2022-11-17 07:12:31 -06:00
VariantImplDetail.h Fix issue with union placeholder on Intel compiler 2023-09-26 07:25:25 -04:00
VariantImplDetail.h.in Fix issue with union placeholder on Intel compiler 2023-09-26 07:25:25 -04:00
VecOperators.h vtkm::Vec: added unrolled arithmetic operators overload 2020-09-03 16:10:15 -04:00
VecOperators.h.in vtkm::Vec: added unrolled arithmetic operators overload 2020-09-03 16:10:15 -04:00
Windows.h conslidate the license statement 2019-04-17 10:57:13 -06:00