Skip to content
Snippets Groups Projects
  1. Apr 19, 2021
  2. Apr 14, 2021
    • Enrico Guiraud's avatar
      [cling] Better SFINAE check to print collection values · 87a998d4
      Enrico Guiraud authored
      
      In order to specialize cling's value-printing logic for collections
      we perform some SFINAE checks. Among other things, the checks
      assert that `++(obj.begin())` is well-formed. That compiles for
      `std::vector` and other collections with "fat" iterators, but does
      not compile for collections that use raw pointers as iterators:
      
      ```cpp
      auto beg(std::vector<int> &v) {
          return v.begin();
      }
      
      int *beg2(std::vector<int> &v) {
          return &v[0];
      }
      
      int main() {
          std::vector<int> v{1,2,3};
          beg(v) += 1;
          //beg2(v) += 1; // does not compile - beg2(v) is not an lvalue
      
          return 0;
      }
      ```
      
      Requiring instead `std::begin(obj)` to be well-formed should be
      backward compatible and it should allow collections that use raw
      pointers as iterators to also be pretty-printed by cling.
      
      Co-authored-by: default avatarAxel Naumann <Axel.Naumann@cern.ch>
      Unverified
      87a998d4
  3. Apr 09, 2021
  4. Apr 06, 2021
    • Jonas Hahnfeld's avatar
      [cling] Set full target for Apple M1 (#7787) · f75a7c46
      Jonas Hahnfeld authored
      The argument -Xclang -triple=... completely bypasses Clang's Driver
      logic and only sets the triple in CC1. This suffices for most code
      generation tasks, but the Driver cannot compute the correct ABI and
      sets the generic AArch64 "aapcs" instead of the specific "darwinpcs".
      In turn, this causes integer arguments with less than 32 bits not
      being sign-extended but being passed directly, which for example
      manifests as (short)-1 being read as 65535 on the callee side.
      
      The new argument --target=arm64-apple-darwin20.3.0 matches what
      Apple's and LLVM main's clang return for --print-target-triple.
      
      Fixes #7090
      Unverified
      f75a7c46
  5. Apr 05, 2021
  6. Apr 02, 2021
  7. Apr 01, 2021
    • Bertrand Bellenot's avatar
      First step to port ROOT on Windows 64 bit (#7759) · c8270198
      Bertrand Bellenot authored
      * First step to port ROOT on Windows 64 bit
      
       - Introduce the Win64 option and flags in the CMake build system
       - Introduce the new `Longptr_t` and `ULongptr_t` types to hold a pointer (4 bytes on Win32 and 8 bytes on Win64), aimed to replace the `Long_t` and `ULong_t` used to cast pointers, and being both 4 bytes on Windows. Their values will not change on other platforms (`Long_t` and `ULong_t`) for backward compatibility
       - Add the 64 bit export symbols in `core/metacling/src/CMakeLists.txt`
       - Add the 64 bit version of lzma (xz-5.2.4-win64.tar.gz)
      
      * Add forgotten semicolons
      Unverified
      c8270198
  8. Mar 31, 2021
  9. Mar 23, 2021
    • Bertrand Bellenot's avatar
      Fix unresolved external symbol errors on Windows · 08c5147a
      Bertrand Bellenot authored
      Resolves root-project/cling#399
      Fix the following linker errors:
      253>cling.exp : error LNK2001: unresolved external symbol "public: static class std::basic_string<char,struct std::char_traits,class std::allocator > __cdecl clang::QualType::getAsString(class clang::Type const *,class clang::Qualifiers)" (?getAsString@QualType@clang@@sa?AV?$basic_string@DU?$char_traits@D@std@@v?$allocator@D@2@@std@@PEBVType@2@VQualifiers@2@@z)
      253>cling.exp : error LNK2001: unresolved external symbol "private: virtual void __cdecl llvm::raw_ostream::handle(void)" (?handle@raw_ostream@llvm@@EEAAXXZ)
      253>D:\work\libs\cling\src\build\Release\bin\cling.exe : fatal error LNK1120: 2 unresolved externals
      08c5147a
  10. Mar 21, 2021
    • Vassil Vassilev's avatar
      [cmake] Do not bind cling's sysroot to a particular version of osx sdk. · 9ae2943b
      Vassil Vassilev authored
      The CMAKE_OSX_SYSROOT exports the exact version of the sdk which we build
      against. However, this means that binary releases become sensitive to minor sdk
      upgrades (eg. MacOSX11.1.sdk -> MacOSX11.2.sdk). Our infrastructure is
      relatively resilient to such changes.
      
      This patch introduces a workaround to address this issue -- it uses the fact
      that the current sdk's parent directory has a symlink MacOSX.sdk which points
      to the current sdk.
      
      This should resolve root-project/root#7021.
      9ae2943b
  11. Mar 18, 2021
  12. Mar 16, 2021
  13. Mar 11, 2021
    • Vassil Vassilev's avatar
      [cling] Install the modulemap files · f154cd74
      Vassil Vassilev authored
      f154cd74
    • Bertrand Bellenot's avatar
      Silent many warning C4624 on Windows · f03a6ca4
      Bertrand Bellenot authored
      Silent the following zillion of warnings on Windows:
      ```
      C:\Users\sftnight\git\master\interpreter\llvm\src\include\llvm/Support/type_traits.h(97,1): warning C4624: 'llvm::detail::trivial_helper<T>': destructor was implicitly defined as deleted [C:\Users\sftnight\build\relwithdebinfo\interpreter\cling\lib\Interpreter\obj.clingInterpreter.vcxproj]
                with
                [
                    T=clang::Sema::ModuleScope
                ]
      C:\Users\sftnight\git\master\interpreter\llvm\src\include\llvm/Support/type_traits.h(150): message : see reference to class template instantiation 'llvm::detail::trivial_helper<T>' being compiled [C:\Users\sftnight\build\relwithdebinfo\interpreter\cling\lib\Interpreter\obj.clingInterpreter.vcxproj]
                with
                [
                    T=clang::Sema::ModuleScope
                ]
      C:\Users\sftnight\git\master\interpreter\llvm\src\include\llvm/ADT/SmallVector.h(315): message : see reference to class template instantiation 'llvm::is_trivially_copyable<T>' being compiled [C:\Users\sftnight\build\relwithdebinfo\interpreter\cling\lib\Interpreter\obj.clingInterpreter.vcxproj]
                with
                [
                    T=clang::Sema::ModuleScope
                ]
      C:\Users\sftnight\git\master\interpreter\llvm\src\include\llvm/ADT/SmallVector.h(837): message : see reference to class template instantiation 'llvm::SmallVectorImpl<T>' being compiled [C:\Users\sftnight\build\relwithdebinfo\interpreter\cling\lib\Interpreter\obj.clingInterpreter.vcxproj]
                with
                [
                    T=clang::Sema::ModuleScope
                ]
      C:\Users\sftnight\git\master\interpreter\llvm\src\tools\clang\include\clang/Sema/Sema.h(1724): message : see reference to class template instantiation 'llvm::SmallVector<clang::Sema::ModuleScope,16>' being compiled [C:\Users\sftnight\build\relwithdebinfo\interpreter\cling\lib\Interpreter\obj.clingInterpreter.vcxproj]
      ```
      f03a6ca4
  14. Mar 09, 2021
    • Jonas Hahnfeld's avatar
      [cling] Disable GlobalISel on AArch64 (#7419) · fcab0add
      Jonas Hahnfeld authored
      In tests on an Apple M1 after the upgrade to LLVM 9, this new
      instruction selection framework emits branches / calls that expect
      all code to be reachable in +/- 128 MB. This cannot be guaranteed
      during JIT, which generates code into allocated pages on the heap
      and could span the entire address space of the process.
      Unverified
      fcab0add
  15. Mar 07, 2021
    • Vassil Vassilev's avatar
      [cxxmodules] Mark the overridden transient file. · 396347b8
      Vassil Vassilev authored
      This patch is a complementary chenge to root-project/root@d2c0929e0d
      It will turn off the isOutOfDate checks for transient files with different
      size on disk. This is quite dangerous but we are supposed to control the
      build environment which prepares the distributable binaries.
      
      This should fix the cmssw issue:
      
      StdDictionaries/src/DataFormatsStdDictionaries/a/DataFormatsStdDictionaries_all_def.xml
      input_line_8:1:22: error: file '/usr/include/linux/falloc.h' from the precompiled header has been overridden
                           ^
      rootcling: /build/cmsbld/jenkins/workspace/build-any-ib/w/BUILD/slc7_amd64_gcc820/lcg/root/6.17.01/root-6.17.01/interpreter/llvm/src/tools/clang/include/clang/Serialization/Module.h:72: clang::serialization::InputFile::InputFile(const clang::FileEntry*, bool, bool): Assertion `!(isOverridden && isOutOfDate) && "an overridden cannot be out-of-date"' failed.
      
      The error tells us that `falloc.h` has different file size on the build machine and
      on the distribution machine. We should probably rely on an environment variable
      to turn off this diagnostic selectively and more the reponsibility if something goes
      wrong to the distribution team. They should have better knowledge what is safe to
      be ignored anyway.
      396347b8
    • Vassil Vassilev's avatar
      [cxxmodules][pch] Disable validation of transent files. · b63f0db1
      Vassil Vassilev authored
      In clang a transient file is a header file which is stored in the pch/pcm file.
      If this file does not exist, clang creates a virtual file of the unzipped stored
      file. However, if the file exists it compares the size of the file on disk and
      the size of the transent file. If the two sizes are different it does not
      complain (as validation is off) but it triggers an assert in when constructing
      and outdated clang::InputFile. The implementation disallows a overridden or
      transient file to be out of date.
      
      This patch extends the DisableValidation abilities to span not only for timestamps
      but we avoid checking the file sizes if the file is on the disk. And, instead we
      just create a virtual file of the file that we already have.
      
      This patch should fix a relocation issue for cmssw and some of the reported LCG
      issues.
      b63f0db1
  16. Mar 06, 2021
  17. Mar 05, 2021
Loading