Skip to content

Conversation

@vgvassilev
Copy link
Member

@vgvassilev vgvassilev commented Jan 22, 2018

ROOT injects forward declarations of entities as trampolines to resolve the full definitions and load the corresponding library. This allows the ROOT users to 'just' type a name and the interpreter will resolve its definition and dlopen the library describing it.

There is a well-known (not well understood until now) limitation with this system: we cannot load entities in namespaces. Namely, if we type ROOT::TDF::TDataFrame; the system won't be able to resolve it. This is because we enable the system to load only the contents of namespaces from the forward declarations. For example,

// rootmap file
namespace ROOT{ namespace Experimental { class TDataFrame; } } // #1

// real code
namespace ROOT{ namespace Experimental { class TDataFrame {}; } } // #2

[root] ROOT::Experimental::TDataFrame d; // #3

#1 is piped at root/interpreter start up; we find the DeclContext and flag it. #3 triggers a lookup and #includes #2. The problem is that we do not issue a lookup in #2. The effect is that we practically cannot autoload entities from namespaces.

Turning it 'just' on breaks performance and starts loading irrelevant libraries. This is because clang eagerly deserializes template specialization declarations for the decl context in question when computing linkage information in CodeGen.

All heavy lifting is done in D41416 and landed in e51a2b9. It enables finer-grained template specialization deserialization removing the effect of loading irrelevant libraries. The performance impact will be seen shortly after we land this PR.

@vgvassilev vgvassilev requested a review from pcanal as a code owner January 22, 2018 21:08
@phsft-bot
Copy link

Starting build on centos7/gcc49, mac1013/native, slc6/gcc49, slc6/gcc62, slc6/gcc62, ubuntu16/native, ubuntu16/native, windows10/vc15 with flags -Dvc=OFF -Dimt=ON -Dccache=ON
How to customize builds

@pcanal
Copy link
Member

pcanal commented Jan 22, 2018

Hi Vassil,

Could you enhance the commit message with a short explanation of why the fear in the comment are no longer a problem and/or what does D40901 do :) ?

Thanks,
Philippe.

@vgvassilev
Copy link
Member Author

Sure, will do. Let's see if it does what I expect.

@phsft-bot
Copy link

Build failed on mac1013/native.
See console output.

Warnings:

  • /cvmfs/sft.cern.ch/lcg/releases/R/3.2.5-c8cca/x86_64-mac1013-clang90-opt/lib/R/include/R.h:40:10: warning: non-portable path to file '<RConfig.h>'; specified path differs in case from file name on disk [-Wnonportable-include-path]
  • /cvmfs/sft.cern.ch/lcg/releases/R/3.2.5-c8cca/x86_64-mac1013-clang90-opt/lib/R/include/R_ext/RS.h:29:10: warning: non-portable path to file '<RConfig.h>'; specified path differs in case from file name on disk [-Wnonportable-include-path]
  • /cvmfs/sft.cern.ch/lcg/releases/R/3.2.5-c8cca/x86_64-mac1013-clang90-opt/lib/R/include/Rinternals.h:60:11: warning: non-portable path to file '<RConfig.h>'; specified path differs in case from file name on disk [-Wnonportable-include-path]
  • /cvmfs/sft.cern.ch/lcg/releases/R/3.2.5-c8cca/x86_64-mac1013-clang90-opt/lib/R/library/Rcpp/include/Rcpp/r/headers.h:57:10: warning: non-portable path to file '<RVersion.h>'; specified path differs in case from file name on disk [-Wnonportable-include-path]
  • /cvmfs/sft.cern.ch/lcg/releases/R/3.2.5-c8cca/x86_64-mac1013-clang90-opt/lib/R/include/R_ext/Visibility.h:29:10: warning: non-portable path to file '<RConfig.h>'; specified path differs in case from file name on disk [-Wnonportable-include-path]
  • /cvmfs/sft.cern.ch/lcg/releases/R/3.2.5-c8cca/x86_64-mac1013-clang90-opt/lib/R/include/R.h:40:10: warning: non-portable path to file '<RConfig.h>'; specified path differs in case from file name on disk [-Wnonportable-include-path]
  • /cvmfs/sft.cern.ch/lcg/releases/R/3.2.5-c8cca/x86_64-mac1013-clang90-opt/lib/R/include/R_ext/RS.h:29:10: warning: non-portable path to file '<RConfig.h>'; specified path differs in case from file name on disk [-Wnonportable-include-path]
  • /cvmfs/sft.cern.ch/lcg/releases/R/3.2.5-c8cca/x86_64-mac1013-clang90-opt/lib/R/include/Rinternals.h:60:11: warning: non-portable path to file '<RConfig.h>'; specified path differs in case from file name on disk [-Wnonportable-include-path]
  • /cvmfs/sft.cern.ch/lcg/releases/R/3.2.5-c8cca/x86_64-mac1013-clang90-opt/lib/R/library/Rcpp/include/Rcpp/r/headers.h:57:10: warning: non-portable path to file '<RVersion.h>'; specified path differs in case from file name on disk [-Wnonportable-include-path]
  • /cvmfs/sft.cern.ch/lcg/releases/R/3.2.5-c8cca/x86_64-mac1013-clang90-opt/lib/R/include/R_ext/Visibility.h:29:10: warning: non-portable path to file '<RConfig.h>'; specified path differs in case from file name on disk [-Wnonportable-include-path]

And 10 more

Failing tests:

And 190 more

@vgvassilev
Copy link
Member Author

We are still not there yet.

6  0x00007fdefa08e12d in TCling::LoadPCM(TString, char const**, void (*)()) const () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#7  0x00007fdefa091484 in TCling::RegisterModule(char const*, char const**, char const**, char const*, char const*, void (*)(), std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int> > > const&, char const**, bool, bool) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#8  0x00007fdeff28f846 in TROOT::RegisterModule(char const*, char const**, char const**, char const*, char const*, void (*)(), std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int> > > const&, char const**, bool) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCore.so
#9  0x00007fdeef0e706a in (anonymous namespace)::TriggerDictionaryInitialization_libGraf3d_Impl() () from /mnt/build/workspace/root-pullrequests-build/build/lib/libGraf3d.so
#10 0x00007fdeff9b76ba in ?? () from /lib64/ld-linux-x86-64.so.2
#11 0x00007fdeff9b77cb in ?? () from /lib64/ld-linux-x86-64.so.2
#12 0x00007fdeff9bc8e2 in ?? () from /lib64/ld-linux-x86-64.so.2
#13 0x00007fdeff9b7564 in ?? () from /lib64/ld-linux-x86-64.so.2
#14 0x00007fdeff9bbda9 in ?? () from /lib64/ld-linux-x86-64.so.2
#15 0x00007fdefdf5ef09 in ?? () from /lib/x86_64-linux-gnu/libdl.so.2
#16 0x00007fdeff9b7564 in ?? () from /lib64/ld-linux-x86-64.so.2
#17 0x00007fdefdf5f571 in ?? () from /lib/x86_64-linux-gnu/libdl.so.2
#18 0x00007fdefdf5efa1 in dlopen () from /lib/x86_64-linux-gnu/libdl.so.2
#19 0x00007fdefa1987b6 in cling::utils::platform::DLOpen(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#20 0x00007fdefa0e703f in cling::DynamicLibraryManager::loadLibrary(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, bool) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#21 0x00007fdefa07b6b0 in TCling::Load(char const*, bool) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#22 0x00007fdeff3747cd in TSystem::Load(char const*, char const*, bool) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCore.so
#23 0x00007fdeff28d497 in TROOT::LoadClass(char const*, char const*, bool) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCore.so
#24 0x00007fdefa07956d in TCling::AutoLoad(char const*, bool) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#25 0x00007fdefa085141 in TCling::AutoParse(char const*) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#26 0x00007fdefa0b7b4b in TClingCallbacks::tryAutoParseInternal(llvm::StringRef, clang::LookupResult&, clang::Scope*, clang::FileEntry const*) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#27 0x00007fdefa0b8de7 in TClingCallbacks::LookupObject(clang::DeclContext const*, clang::DeclarationName) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#28 0x00007fdefa0e7c23 in cling::MultiplexInterpreterCallbacks::LookupObject(clang::DeclContext const*, clang::DeclarationName) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#29 0x00007fdefb4c7cf4 in clang::MultiplexExternalSemaSource::FindExternalVisibleDeclsByName(clang::DeclContext const*, clang::DeclarationName) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#30 0x00007fdefba711d0 in clang::DeclContext::lookup(clang::DeclarationName) const () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#31 0x00007fdefba70f44 in clang::DeclContext::lookup(clang::DeclarationName) const () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#32 0x00007fdefa58a435 in clang::ASTReader::CompleteRedeclChain(clang::Decl const*) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#33 0x00007fdefb4c7a34 in clang::MultiplexExternalSemaSource::CompleteRedeclChain(clang::Decl const*) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#34 0x00007fdefa21c257 in clang::Redeclarable<clang::RedeclarableTemplateDecl>::DeclLink::getNext(clang::RedeclarableTemplateDecl const*) const () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#35 0x00007fdefb9c9db0 in clang::ASTContext::DeclMustBeEmitted(clang::Decl const*) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#36 0x00007fdefa237024 in clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#37 0x00007fdefa2379f9 in clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) [clone .part.5247] [clone .constprop.5251] () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#38 0x00007fdefa19c893 in clang::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#39 0x00007fdefa16e16c in cling::DeclCollector::HandleInterestingDecl(clang::DeclGroupRef) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#40 0x00007fdefa58db63 in clang::ASTReader::PassInterestingDeclToConsumer(clang::Decl*) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#41 0x00007fdefa5da4dc in clang::ASTReader::PassInterestingDeclsToConsumer() () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#42 0x00007fdefa5b063e in clang::ASTReader::FinishedDeserializing() [clone .part.1962] [clone .constprop.2010] () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#43 0x00007fdefb4c7fe1 in clang::MultiplexExternalSemaSource::FinishedDeserializing() () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#44 0x00007fdefba6e261 in clang::DeclContext::LoadLexicalDeclsFromExternalStorage() const () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#45 0x00007fdefba6e2cf in clang::DeclContext::decls_begin() const () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#46 0x00007fdefa0bbce9 in TClingClassInfo::TClingClassInfo(cling::Interpreter*, bool) () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so
#47 0x00007fdefa07a53a in TCling::GetDataMember(ClassInfo_t*, char const*) const () from /mnt/build/workspace/root-pullrequests-build/build/lib/libCling.so

We trigger excessive deserialization due to the eager iterations over the decl contexts. This PR likely depends on #1416.

@vgvassilev
Copy link
Member Author

@phsft-bot build!

@phsft-bot
Copy link

Starting build on centos7/gcc49, mac1013/native, slc6/gcc49, slc6/gcc62, slc6/gcc62, ubuntu16/native, ubuntu16/native, windows10/vc15 with flags -Dvc=OFF -Dimt=ON -Dccache=ON
How to customize builds

@phsft-bot
Copy link

Starting build on centos7/gcc49, mac1013/native, slc6/gcc49, slc6/gcc62, slc6/gcc62, ubuntu16/native, ubuntu16/native, windows10/vc15 with flags -Dvc=OFF -Dimt=ON -Dccache=ON
How to customize builds

@vgvassilev
Copy link
Member Author

We still have to avoid extra iteration happening:

[/Volumes/HD2/build/jenkins/workspace/root-pullrequests-build/build/lib/libCling.so] clang::ASTReader::PassInterestingDeclsToConsumer() (no debug info)
[/Volumes/HD2/build/jenkins/workspace/root-pullrequests-build/build/lib/libCling.so] clang::ASTReader::FinishedDeserializing() (no debug info)
[/Volumes/HD2/build/jenkins/workspace/root-pullrequests-build/build/lib/libCling.so] clang::MultiplexExternalSemaSource::FinishedDeserializing() (no debug info)
[/Volumes/HD2/build/jenkins/workspace/root-pullrequests-build/build/lib/libCling.so] clang::DeclContext::LoadLexicalDeclsFromExternalStorage() const (no debug info)
[/Volumes/HD2/build/jenkins/workspace/root-pullrequests-build/build/lib/libCling.so] clang::DeclContext::decls_begin() const (no debug info)
[/Volumes/HD2/build/jenkins/workspace/root-pullrequests-build/build/lib/libCling.so] TClingClassInfo::TClingClassInfo(cling::Interpreter*, bool) (no debug info)
[/Volumes/HD2/build/jenkins/workspace/root-pullrequests-build/build/lib/libCling.so] TClingDataMemberInfo::TClingDataMemberInfo(cling::Interpreter*, clang::ValueDecl const*, TClingClassInfo*) (no debug info)
[/Volumes/HD2/build/jenkins/workspace/root-pullrequests-build/build/lib/libCling.so] TCling::DataMemberInfo_Factory(void const*, ClassInfo_t*) const (no debug info)
[/Volumes/HD2/build/jenkins/workspace/root-pullrequests-build/build/lib/libCore.so] TListOfDataMembers::Get(void const*) (no debug info)
[/Volumes/HD2/build/jenkins/workspace/root-pullrequests-build/build/lib/libCore.so] TListOfDataMembers::FindObject(char const*) const (no debug info)
[/Volumes/HD2/build/jenkins/workspace/root-pullrequests-build/build/lib/libCling.so] TCling::HandleNewDecl(void const*, bool, std::__1::set<TClass*, std::__1::less<TClass*>, std::__1::allocator<TClass*> >&) (no debug info)
[/Volumes/HD2/build/jenkins/workspace/root-pullrequests-build/build/lib/libCling.so] TCling::UpdateListsOnCommitted(cling::Transaction const&) (no debug info)
[/Volumes/HD2/build/jenkins/workspace/root-pullrequests-build/build/lib/libCling.so] cling::MultiplexInterpreterCallbacks::TransactionCommitted(cling::Transaction const&) (no debug info)
[/Volumes/HD2/build/jenkins/workspace/root-pullrequests-build/build/lib/libCling.so] cling::Interpreter::PushTransactionRAII::~PushTransactionRAII() (no debug info)
[/Volumes/HD2/build/jenkins/workspace/root-pullrequests-build/build/lib/libCling.so] TClingDataMemberInfo::TClingDataMemberInfo(cling::Interpreter*, TClingClassInfo*) (no debug info)
[/Volumes/HD2/build/jenkins/workspace/root-pullrequests-build/build/lib/libCling.so] TCling::DataMemberInfo_Factory(ClassInfo_t*) 

@vgvassilev
Copy link
Member Author

@phsft-bot build!

@phsft-bot
Copy link

Starting build on centos7/gcc49, mac1013/native, slc6/gcc49, slc6/gcc62, slc6/gcc62, ubuntu16/native, ubuntu16/native, windows10/vc15 with flags -Dvc=OFF -Dimt=ON -Dccache=ON
How to customize builds

@phsft-bot
Copy link

Starting build on centos7/gcc49, mac1013/native, slc6/gcc49, slc6/gcc62, slc6/gcc62, ubuntu16/native, ubuntu16/native, windows10/vc15 with flags -Dvc=OFF -Dimt=ON -Dccache=ON
How to customize builds

@phsft-bot
Copy link

@phsft-bot
Copy link

Build failed on centos7/gcc49.
See console output.

Errors:

  • ERROR: Timeout after 10 minutes
  • ERROR: Error cloning remote repo 'origin'
  • ERROR: Error cloning remote repo 'origin'

Failing tests:

@phsft-bot
Copy link

Build failed on ubuntu16/native.
See console output.

Failing tests:

@phsft-bot
Copy link

@vgvassilev
Copy link
Member Author

It looks like that clang stores candidates for diagnostics and then does analysis on clang::Sema::HandleEndOfTranslationUnit call. When autoloading we call TCling::RegisterModule which in turn can call many times clang::Sema::HandleEndOfTranslationUnit.

Second half of the TCling::RegisterModule body suppresses diagnostics this silences warnings coming from Sema and flushes the collected candidates. The case here is a little odd: the diagnostics fires only in ROOT built with release mode. The branches being taken by both release and debug mode seem identical. It looks like the debug mode somehow enters in silence diagnostics mode and release does not.

This PR is not critical for the runtime cxxmodules development but it fixes the broken autoloading behavior of 'regular' ROOT. This is the only observable failure we got in a very obscure way.

@vgvassilev
Copy link
Member Author

@phsft-bot build on centos7/gcc49, mac1013/native, slc6/gcc49, slc6/gcc62, slc6/gcc62, ubuntu16/native, ubuntu16/native, windows10/vc15 with flags -Dvc=OFF -Dimt=ON -Dccache=ON

@phsft-bot
Copy link

Starting build on centos7/gcc49, mac1013/native, slc6/gcc49, slc6/gcc62, slc6/gcc62, ubuntu16/native, ubuntu16/native, windows10/vc15 with flags -Dvc=OFF -Dimt=ON -Dccache=ON
How to customize builds

@phsft-bot
Copy link

Build failed on mac1013/native.
See console output.

Errors:

  • /Volumes/MacintoshHD/build/jenkins/workspace/root-pullrequests-build/root/interpreter/llvm/src/tools/clang/lib/AST/ODRHash.cpp:578:8: error: class member cannot be redeclared
  • /Volumes/MacintoshHD/build/jenkins/workspace/root-pullrequests-build/root/interpreter/llvm/src/tools/clang/lib/AST/ODRHash.cpp:583:8: error: class member cannot be redeclared

@phsft-bot
Copy link

Build failed on slc6/gcc49.
See console output.

Errors:

  • ../root/interpreter/llvm/src/tools/clang/lib/AST/ODRHash.cpp:578:8: error: ‘void ODRTypeVisitor::VisitPointerType(const clang::PointerType*)’ cannot be overloaded
  • ../root/interpreter/llvm/src/tools/clang/lib/AST/ODRHash.cpp:505:8: error: with ‘void ODRTypeVisitor::VisitPointerType(const clang::PointerType*)’
  • ../root/interpreter/llvm/src/tools/clang/lib/AST/ODRHash.cpp:583:8: error: ‘void ODRTypeVisitor::VisitReferenceType(const clang::ReferenceType*)’ cannot be overloaded
  • ../root/interpreter/llvm/src/tools/clang/lib/AST/ODRHash.cpp:510:8: error: with ‘void ODRTypeVisitor::VisitReferenceType(const clang::ReferenceType*)’

@phsft-bot
Copy link

Build failed on ubuntu16/native.
See console output.

Errors:

  • /mnt/build/workspace/root-pullrequests-build/root/interpreter/llvm/src/tools/clang/lib/AST/ODRHash.cpp:578:8: error: ‘void ODRTypeVisitor::VisitPointerType(const clang::PointerType*)’ cannot be overloaded
  • /mnt/build/workspace/root-pullrequests-build/root/interpreter/llvm/src/tools/clang/lib/AST/ODRHash.cpp:505:8: error: with ‘void ODRTypeVisitor::VisitPointerType(const clang::PointerType*)’
  • /mnt/build/workspace/root-pullrequests-build/root/interpreter/llvm/src/tools/clang/lib/AST/ODRHash.cpp:583:8: error: ‘void ODRTypeVisitor::VisitReferenceType(const clang::ReferenceType*)’ cannot be overloaded
  • /mnt/build/workspace/root-pullrequests-build/root/interpreter/llvm/src/tools/clang/lib/AST/ODRHash.cpp:510:8: error: with ‘void ODRTypeVisitor::VisitReferenceType(const clang::ReferenceType*)’

@phsft-bot
Copy link

Starting build on centos7/gcc49, mac1013/native, slc6/gcc49, slc6/gcc62, slc6/gcc62, ubuntu16/native, ubuntu16/native, windows10/vc15 with flags -Dvc=OFF -Dimt=ON -Dccache=ON
How to customize builds

@phsft-bot
Copy link

@phsft-bot
Copy link

@phsft-bot
Copy link

@phsft-bot
Copy link

Build failed on mac1013/native.
See console output.

Warnings:

  • /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__tree:1819:22: warning: the specified comparator type does not provide a const call operator [-Wuser-defined-warnings]
  • /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__tree:1819:22: warning: the specified comparator type does not provide a const call operator [-Wuser-defined-warnings]
  • /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__tree:1819:22: warning: the specified comparator type does not provide a const call operator [-Wuser-defined-warnings]

Failing tests:

And 3 more

@phsft-bot
Copy link

@vgvassilev
Copy link
Member Author

@phsft-bot build on centos7/gcc49, mac1013/native, slc6/gcc49, slc6/gcc62, slc6/gcc62, ubuntu16/native, ubuntu16/native, windows10/vc15 with flags -Dvc=OFF -Dimt=ON -Dccache=ON

@phsft-bot
Copy link

Starting build on centos7/gcc49, mac1013/native, slc6/gcc49, slc6/gcc62, slc6/gcc62, ubuntu16/native, ubuntu16/native, windows10/vc15 with flags -Dvc=OFF -Dimt=ON -Dccache=ON
How to customize builds

@phsft-bot
Copy link

Build failed on mac1013/native.
See console output.

Warnings:

  • /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__tree:1819:22: warning: the specified comparator type does not provide a const call operator [-Wuser-defined-warnings]
  • /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__tree:1819:22: warning: the specified comparator type does not provide a const call operator [-Wuser-defined-warnings]
  • /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__tree:1819:22: warning: the specified comparator type does not provide a const call operator [-Wuser-defined-warnings]

Failing tests:

And 2 more

@phsft-bot
Copy link

Build failed on centos7/gcc49.
See console output.

Failing tests:

@phsft-bot
Copy link

@vgvassilev
Copy link
Member Author

@Axel-Naumann, look like the failures are unrelated. It looks like this is a feature that can land.

@vgvassilev
Copy link
Member Author

vgvassilev commented Apr 30, 2018 via email

@Axel-Naumann Axel-Naumann merged commit 7fa206c into root-project:master Apr 30, 2018
@Axel-Naumann
Copy link
Member

Failed in projectroot.roottest.root.treeproxy.roottest_root_treeproxy_make / spurious load of libRooFit.

I have reverted this PR in 4b57fdf

@pcanal
Copy link
Member

pcanal commented May 7, 2018

Note that I do not understand how we can define a canonical namespace in the context of libraries.
For example with two trivial libraries that contains solely what is described in one of those two simple headers:

// header A.h for library A.so
namespace Generic {
    void functionA(int) {};
}
// header B.h for library B.so
namespace Generic {
    void functionB(int) {};
}

which of those 'two' library should be loaded when 'autoloading [the] canonical namespace'

I.e. A priori autoloading namespaces is the wrong granularity and we should/can autoload things like classes, enum ... and (what we are currently missing) free standing functions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants