Skip to content

Suppress TBB Warnings with C++20, 23.0 branch (2023.07.06.)

I hate this proposal, but just can not come up with a better solution for the issue described in ATLINFR-4996. 😦 Even when I execute the dictionary generation for AthContainers by hand with:

/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/ROOT/v6-28-00-patches/x86_64-el9-gcc13-opt/bin/genreflex \
  /mnt/hdd1/krasznaa/projects/gcc13/athena/Control/AthContainers/AthContainers/AthContainersDict.h -o AthContainersDictReflexDict.cxx \
  --noIncludePaths --rootmap=AthContainersDict.dsomap --rootmap-lib=libAthContainersDict.so --library=libAthContainersDict.so \
  --select="/mnt/hdd1/krasznaa/projects/gcc13/athena/Control/AthContainers/AthContainers/selection.xml" \
  -I "/mnt/hdd1/krasznaa/projects/gcc13/athena/Control/AthContainers" \
  -isystem "/cvmfs/atlas-nightlies.cern.ch/repo/sw/master--dev4LCG_Athena_x86_64-el9-gcc13-opt/2023-07-05T0730/AthenaExternals/24.0.8/InstallArea/x86_64-el9-gcc13-opt/lib/CLHEP-2.4.1.3/../../include" \
  -isystem "/mnt/hdd1/krasznaa/projects/gcc13/build/Control/AthContainers/CMakeFiles" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/ROOT/v6-28-00-patches/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/atlas-nightlies.cern.ch/repo/sw/master--dev4LCG_Athena_x86_64-el9-gcc13-opt/2023-07-05T0730/AthenaExternals/24.0.8/InstallArea/x86_64-el9-gcc13-opt/lib/CLHEP-2.4.1.3/../../include" \
  -isystem "/mnt/hdd1/krasznaa/projects/gcc13/athena/Control/AthContainers" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/ROOT/v6-28-00-patches/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/ROOT/v6-28-00-patches/x86_64-el9-gcc13-opt/include" -isystem "/mnt/hdd1/krasznaa/projects/gcc13/athena/Control/AthContainers" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/Boost/1.82.0/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/tbb/2020_U2/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/atlas-nightlies.cern.ch/repo/sw/master--dev4LCG_Athena_x86_64-el9-gcc13-opt/2023-07-05T0730/Athena/24.0.8/InstallArea/x86_64-el9-gcc13-opt/src/Control/AthContainersInterfaces" \
  -isystem "/cvmfs/atlas-nightlies.cern.ch/repo/sw/master--dev4LCG_Athena_x86_64-el9-gcc13-opt/2023-07-05T0730/Athena/24.0.8/InstallArea/x86_64-el9-gcc13-opt/src/Control/CxxUtils" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/Boost/1.82.0/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/atlas-nightlies.cern.ch/repo/sw/master--dev4LCG_Athena_x86_64-el9-gcc13-opt/2023-07-05T0730/Athena/24.0.8/InstallArea/x86_64-el9-gcc13-opt/src/Control/AthenaKernel" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/Boost/1.82.0/x86_64-el9-gcc13-opt/include" \
  -isystem "/usr/include" \
  -isystem "/cvmfs/atlas-nightlies.cern.ch/repo/sw/master--dev4LCG_Athena_x86_64-el9-gcc13-opt/2023-07-05T0730/Athena/24.0.8/InstallArea/x86_64-el9-gcc13-opt/src/Control/DataModelRoot" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/ROOT/v6-28-00-patches/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/atlas-nightlies.cern.ch/repo/sw/master--dev4LCG_Athena_x86_64-el9-gcc13-opt/2023-07-05T0730/AthenaExternals/24.0.8/InstallArea/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/atlas-nightlies.cern.ch/repo/sw/master--dev4LCG_Athena_x86_64-el9-gcc13-opt/2023-07-05T0730/AthenaExternals/24.0.8/InstallArea/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/latest/Boost/1.82.0-fbfc9/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/latest/Boost/1.82.0-fbfc9/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/latest/Boost/1.82.0-fbfc9/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/latest/Boost/1.82.0-fbfc9/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/latest/Boost/1.82.0-fbfc9/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/tbb/2020_U2/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/ROOT/v6-28-00-patches/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/cppgsl/3.1.0/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/fmt/10.0.0/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/jsonmcpp/3.10.5/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/jsonmcpp/3.10.5/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/rangev3/0.11.0/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/atlas-nightlies.cern.ch/repo/sw/master--dev4LCG_Athena_x86_64-el9-gcc13-opt/2023-07-05T0730/Athena/24.0.8/InstallArea/x86_64-el9-gcc13-opt/src/Control/AthLinks" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/Boost/1.82.0/x86_64-el9-gcc13-opt/include" \
  -isystem "/cvmfs/atlas-nightlies.cern.ch/repo/sw/master--dev4LCG_Athena_x86_64-el9-gcc13-opt/2023-07-05T0730/Athena/24.0.8/InstallArea/x86_64-el9-gcc13-opt/src/Control/SGTools" \
  -isystem "/cvmfs/atlas-nightlies.cern.ch/repo/sw/master--dev4LCG_Athena_x86_64-el9-gcc13-opt/2023-07-05T0730/Athena/24.0.8/InstallArea/x86_64-el9-gcc13-opt/src/Control/AthAllocators" \
  -isystem "/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/Boost/1.82.0/x86_64-el9-gcc13-opt/include" \
  -DGAUDI_V20_COMPAT -DATLAS_PACKAGE_NAME=\"AthContainers\" -DEIGEN_DONT_VECTORIZE -DBOOST_FILESYSTEM_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK \
  -DBOOST_THREAD_NO_LIB -DBOOST_THREAD_DYN_LINK -DBOOST_REGEX_NO_LIB -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_NO_LIB -DBOOST_SYSTEM_DYN_LINK \
  -DFMT_SHARED -DJSON_USE_IMPLICIT_CONVERSIONS=1 -DJSON_DIAGNOSTICS=0

i.e. by way over-using -isystem, I would still see the following warning with GCC 13 / C++20:

In file included from input_line_7:10:
In file included from /mnt/hdd1/krasznaa/projects/gcc13/athena/Control/AthContainers/AthContainers/AuxTypeRegistry.h:23:
In file included from /mnt/hdd1/krasznaa/projects/gcc13/athena/Control/AthContainers/AthContainers/tools/threading.h:133:
In file included from /cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/tbb/2020_U2/x86_64-el9-gcc13-opt/include/tbb/concurrent_vector.h:25:
/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/tbb/2020_U2/x86_64-el9-gcc13-opt/include/tbb/atomic.h:240:18: warning: volatile-qualified parameter type 'const volatile long long' is deprecated [-Wdeprecated-volatile]
        converter(value_type a_value) : value(a_value) {}
                 ^
/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/tbb/2020_U2/x86_64-el9-gcc13-opt/include/tbb/atomic.h:269:21: note: in instantiation of template class 'tbb::internal::atomic_impl<long long>::converter<const volatile long long>' requested here
    static typename converter<value_t>::bits_type & to_bits_ref(value_t& value){
                    ^
/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/tbb/2020_U2/x86_64-el9-gcc13-opt/include/tbb/atomic.h:311:42: note: while substituting deduced template arguments into function template 'to_bits_ref' [with value_t = const volatile long long]
                __TBB_load_with_acquire( to_bits_ref(my_storage.my_value) )
                                         ^
/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/tbb/2020_U2/x86_64-el9-gcc13-opt/include/tbb/atomic.h:454:1: note: in instantiation of member function 'tbb::internal::atomic_impl<long long>::operator long long' requested here
__TBB_DECL_ATOMIC(__TBB_LONG_LONG)
^
/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/tbb/2020_U2/x86_64-el9-gcc13-opt/include/tbb/atomic.h:441:78: note: expanded from macro '__TBB_DECL_ATOMIC'
            atomic<T>& operator=( const atomic<T>& rhs ) {store_with_release(rhs); return *this;}   \
...
/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev4/Wed/tbb/2020_U2/x86_64-el9-gcc13-opt/include/tbb/concurrent_vector.h:873:16: note: in instantiation of member function 'tbb::concurrent_vector<SG::AuxTypeRegistry::typeinfo_t, tbb::cache_aligned_allocator<SG::AuxTypeRegistry::typeinfo_t> >::internal_subscript' requested here
        return internal_subscript(index);
               ^
/mnt/hdd1/krasznaa/projects/gcc13/athena/Control/AthContainers/AthContainers/AuxTypeRegistry.icc:48:17: note: in instantiation of member function 'tbb::concurrent_vector<SG::AuxTypeRegistry::typeinfo_t, tbb::cache_aligned_allocator<SG::AuxTypeRegistry::typeinfo_t> >::operator[]' requested here
  return m_types[auxid].m_factory;

At the same time, I just couldn't reproduce the same behaviour in any simple example in which I was trying to use tbb::concurrent_vector in the same way in whith SG::AuxTypeRegistry is doing it. 😕

So I bring this to @ssnyder and @fwinkl: should we do this ugly thing, or continue with the debugging, involving the ROOT developers in the fun as well? I'm not sure myself what would be the best to do. 😦

Merge request reports