UB in shift exponent
When compiling with
clang++ --version
clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
and -fsanitize=undefined
, we obtain the following UB:
Start 31: UnitTestArrayPortalValueReference
31: Test command: /home/4nt/build_vtk-m/bin/UnitTests_vtkm_internal_testing "UnitTestArrayPortalValueReference" "NONE"
31: Test timeout computed to be: 180
31: *** vtkm::Int64 ***************
31: Set array using reference
31: Check values
31: Check references in set array.
31: Check that operators work.
31: /home/4nt/vtk-m/vtkm/internal/ArrayPortalValueReference.h:710:20: runtime error: shift exponent 100 is too large for 64-bit type 'vtkm::internal::ArrayPortalValueReference<vtkm::cont::internal::ArrayPortalFromIterators<long long *, void> >::ValueType' (aka 'long long')
31: SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/4nt/vtk-m/vtkm/internal/ArrayPortalValueReference.h:710:20 in
31: /home/4nt/vtk-m/vtkm/internal/testing/UnitTestArrayPortalValueReference.cxx:98:3: runtime error: shift exponent 100 is too large for 64-bit type 'ValueType' (aka 'long long')
31: SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/4nt/vtk-m/vtkm/internal/testing/UnitTestArrayPortalValueReference.cxx:98:3 in
31: /home/4nt/vtk-m/vtkm/internal/ArrayPortalValueReference.h:702:20: runtime error: shift exponent 100 is too large for 64-bit type 'vtkm::internal::ArrayPortalValueReference<vtkm::cont::internal::ArrayPortalFromIterators<long long *, void> >::ValueType' (aka 'long long')
31: SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/4nt/vtk-m/vtkm/internal/ArrayPortalValueReference.h:702:20 in
31: /home/4nt/vtk-m/vtkm/internal/testing/UnitTestArrayPortalValueReference.cxx:99:3: runtime error: shift exponent 100 is too large for 64-bit type 'ValueType' (aka 'long long')
31: SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/4nt/vtk-m/vtkm/internal/testing/UnitTestArrayPortalValueReference.cxx:99:3 in
31: /home/4nt/vtk-m/vtkm/internal/ArrayPortalValueReference.h:718:14: runtime error: shift exponent 100 is too large for 64-bit type 'typename ArrayPortalFromIterators<long long *, void>::ValueType' (aka 'long long')
31: SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/4nt/vtk-m/vtkm/internal/ArrayPortalValueReference.h:718:14 in
31: /home/4nt/vtk-m/vtkm/internal/testing/UnitTestArrayPortalValueReference.cxx:100:3: runtime error: shift exponent 100 is too large for 64-bit type 'ValueType' (aka 'long long')
31: SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/4nt/vtk-m/vtkm/internal/testing/UnitTestArrayPortalValueReference.cxx:100:3 in
31: /home/4nt/vtk-m/vtkm/internal/testing/UnitTestArrayPortalValueReference.cxx:102:3: runtime error: shift exponent 100 is too large for 64-bit type 'ValueType' (aka 'long long')
31: SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/4nt/vtk-m/vtkm/internal/testing/UnitTestArrayPortalValueReference.cxx:102:3 in
31: /home/4nt/vtk-m/vtkm/internal/testing/UnitTestArrayPortalValueReference.cxx:103:3: runtime error: shift exponent 100 is too large for 64-bit type 'ValueType' (aka 'long long')
31: SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/4nt/vtk-m/vtkm/internal/testing/UnitTestArrayPortalValueReference.cxx:103:3 in
31: /home/4nt/vtk-m/vtkm/internal/testing/UnitTestArrayPortalValueReference.cxx:104:3: runtime error: shift exponent 100 is too large for 64-bit type 'ValueType' (aka 'long long')
31: SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/4nt/vtk-m/vtkm/internal/testing/UnitTestArrayPortalValueReference.cxx:104:3 in
31: /home/4nt/vtk-m/vtkm/internal/ArrayPortalValueReference.h:283:9: runtime error: shift exponent 1000 is too large for 64-bit type 'vtkm::internal::ArrayPortalValueReference<vtkm::cont::internal::ArrayPortalFromIterators<long long *, void> >::ValueType' (aka 'long long')
31: SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/4nt/vtk-m/vtkm/internal/ArrayPortalValueReference.h:283:9 in
31: /home/4nt/vtk-m/vtkm/internal/testing/UnitTestArrayPortalValueReference.cxx:139:12: runtime error: shift exponent 1000 is too large for 64-bit type 'ValueType' (aka 'long long')
31: SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/4nt/vtk-m/vtkm/internal/testing/UnitTestArrayPortalValueReference.cxx:139:12 in
31: /home/4nt/vtk-m/vtkm/internal/ArrayPortalValueReference.h:274:9: runtime error: shift exponent 1000 is too large for 64-bit type 'vtkm::internal::ArrayPortalValueReference<vtkm::cont::internal::ArrayPortalFromIterators<long long *, void> >::ValueType' (aka 'long long')
31: SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/4nt/vtk-m/vtkm/internal/ArrayPortalValueReference.h:274:9 in
31: /home/4nt/vtk-m/vtkm/internal/testing/UnitTestArrayPortalValueReference.cxx:142:12: runtime error: shift exponent 1000 is too large for 64-bit type 'ValueType' (aka 'long long')
31: SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/4nt/vtk-m/vtkm/internal/testing/UnitTestArrayPortalValueReference.cxx:142:12 in
31: /home/4nt/vtk-m/vtkm/internal/ArrayPortalValueReference.h:293:9: runtime error: shift exponent 1000 is too large for 64-bit type 'vtkm::internal::ArrayPortalValueReference<vtkm::cont::internal::ArrayPortalFromIterators<long long *, void> >::ValueType' (aka 'long long')
31: SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/4nt/vtk-m/vtkm/internal/ArrayPortalValueReference.h:293:9 in
31: /home/4nt/vtk-m/vtkm/internal/testing/UnitTestArrayPortalValueReference.cxx:149:12: runtime error: shift exponent 1000 is too large for 64-bit type 'ValueType' (aka 'long long')
31: SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/4nt/vtk-m/vtkm/internal/testing/UnitTestArrayPortalValueReference.cxx:149:12 in