2801 Commits

Author SHA1 Message Date
Boris Perovic
34b8b73a30 Fixed potential bug found by Coverity (https://coverity.cern.ch/reports.htm#v13142/p10001). 2015-08-18 18:08:19 +02:00
Boris Perovic
63bc59dde6 Fixed the bug (missing internal::) from commit 279fc73896036900366fa1596ec4d624b9db1c05. 2015-08-18 18:08:19 +02:00
Boris Perovic
f7cf46ab31 Removed old Stream functions from ValuePrinter.cpp. 2015-08-18 18:08:19 +02:00
Boris Perovic
1aa5329d74 Simplified printValue(const char *const val). 2015-08-18 18:08:18 +02:00
Boris Perovic
e7d605bccc Changed using of QualifiedType.getAsString() to cling::utils::TypeName::GetFullyQualifiedName(QualifiedType, ASTCtx). 2015-08-18 18:08:18 +02:00
Boris Perovic
127f226acd Extracted printing of unpacked Values. Minor comment fixes. 2015-08-18 18:08:18 +02:00
Boris Perovic
a9825d50dc Removed unused function hasViableCandidateToCall (overload resolution and general fallback deals with this now). Moved isAddressValid function from Value.cpp to ValuePrinter.cpp and implemented the check for void*. 2015-08-18 18:08:18 +02:00
Boris Perovic
517eab8df1 Removed old printValue_Default and printType_Default methods. Using fully qualified name in new printType_New method. 2015-08-18 18:08:18 +02:00
Boris Perovic
688ad34b3f Minor fixes around printValue, based on comments after the integration. 2015-08-18 18:08:17 +02:00
Boris Perovic
62c71df1fa Minor fix: print type + " " + value, rather than type" " + value. 2015-08-17 18:45:03 +02:00
Boris Perovic
c44940b223 New printValue() integration (printing unified through overloading of printValue() function and template resolution). Modified tests to conform to the new prints. 2015-08-17 18:45:03 +02:00
Boris Perovic
187cbaf257 Do not randomly add to lookup results during EvaluateT(). 2015-08-17 18:45:03 +02:00
Philippe Canal
1330bd1fe4 Fix ROOT-7462 (extend fix for ROOT-6070)
Original problem:

set atlas shell environment
root.exe
   TFile *_file0 = TFile::Open("atlasfile.root");

bunch of Warning about missing dictionary

   c = TClass::GetClass("GaudiCommon<Algorithm>")

Error in <TProtoClass::FindDataMember>: data member with index 0 is not found in class GaudiUtils::Map<string,SmartIF<IService>,__gnu_cxx::hash_map<string,SmartIF<IService>,GaudiUtils::Hash<string>,equal_to<s
tring>,allocator<SmartIF<IService> > > >
Error in <CreateRealData>: Cannot find data member # 0 of class GaudiUtils::Map<string,SmartIF<IService>,__gnu_cxx::hash_map<string,SmartIF<IService>,GaudiUtils::Hash<string>,equal_to<string>,allocator<SmartI
F<IService> > > > for parent GaudiCommon<Algorithm>!

   c->GetListOfRealData()->ls();

...
OBJ: TRealData m_services      Description of persistent data members : 0 at: 0x9d46d70
OBJ: TRealData m_errors        Description of persistent data members : 0 at: 0x9d47cb0
...

Tweak of the problem:

  c = TClass::GetClass("GaudiCommon<Algorithm>");
  c->GetListOfRealData()->ls();

...
OBJ: TRealData m_services      Description of persistent data members : 0 at: 0x300ce10
OBJ: TRealData m_services.     Description of persistent data members : 0 at: 0x300e9c0
OBJ: TRealData m_errors        Description of persistent data members : 0 at: 0x300eaa0
...

Note: no error or warning but the ListOfRealData is 'wrong'.

Correct behavior:

   TClass::GetClass("SmartIF<IService>");
   TFile *_file0 = TFile::Open("atlasfile.root");
TClass::GetClass("GaudiUtils::Map<string,SmartIF<IService>,__gnu_cxx::hash_map<string,SmartIF<IService>,GaudiUtils::Hash<string>,equal_to<string>,allocator<SmartIF<IService> > > >");
   c = TClass::GetClass("GaudiCommon<Algorithm>");
   c->GetListOfRealData()->ls();

...
OBJ: TRealData m_services      Description of persistent data members : 0 at: 0xc81c820
OBJ: TRealData m_services.m_map        Description of persistent data members : 0 at: 0xc81dd00
OBJ: TRealData m_errors        Description of persistent data members : 0 at: 0xc81ddb0
...

See autoparse for
unary_function<pair<const string,SmartIF<IService> >,const string>
SmartIF<IService>

Analysis:
  1) Opening the file triggering the autoloading of a lots of libraries and the autoparsing of many files.
     This includes the declaration of Gaudi::Map but *not* of SmartIF nor SmartIF<IService>.
     [Side note: this autoloading is due to DataVector<xAOD::Jet_v1> not having a dictionary]
  2) During TClass::GetClass("GaudiCommon<Algorithm>"), the TProtoClass::FillTClass is called and
     disable autoloading and autoparsing and then request the GaudiUtils::Map
  3) Since there is no dictionary for GaudiUtils::Map, findScope is invoked.
  4) During findScope, the instantiation of GaudiUtils::Map fails with an error similar to:
        error: field has incomplete type 'SmartIF<IService>'
  5) The error handling code path in this case in findScope did *not* revert the transaction
     and unload the 'invalid' decl for the GaudiUtils::Map
  6) TClingClassInfo assume all decl are valid but finds and use the invalid decl
  7) In this case, the invalidity of the decl leads to a lack of data members
  8) Thus TProtoClass::FindDataMember complains about the discrepency between the TProtoClass
     information and the information from the decl.

Requesting the TClass for the GaudiUtils::Map when autoloading and autoparsing are leads
to the proper instantiation and thus success.

Requesting the TClass for GaudiCommon<Algorithm> before loading the file means that
when the request for the TClass for GaudiUtils::Map is done, the declaration for
GaudiUtils::Map has not yet been parsed and thus findScope use a different error
handling code path (one where the instantiation is not even attempted).

In normal circunstances (all dictionary properly generated and loaded/loadable),
the missing name part in the list of real data member is not fatal (it would be
if it was the case during the initial gathering of information but as it is, all
the necessary information is already in the rootpcm files).
2015-08-17 18:45:03 +02:00
Axel Naumann
e2f9cf80cd Assert to error: cannot autoload that, its declaring header cannot be found at runtime! 2015-08-17 18:45:03 +02:00
Elisavet Sakellari
d2953ff9a6 Handling of multiple Redirection RAII's 2015-08-17 18:45:02 +02:00
Pere Mato
768254099f Enable C++14 in Cling when compiling with C++14 enabled 2015-08-17 18:45:02 +02:00
Pere Mato
5e5af173cf Forward the c++14 flag to building LLVM/CLING. Enable c++14 in the interpreter if compiled with -std=c++1y or -std=c++14. 2015-08-17 18:45:02 +02:00
Axel Naumann
2a73fc3b9e Grab lang, PP, target opts from PCH if it exists. 2015-08-17 18:45:02 +02:00
Axel Naumann
a0618d59f4 whitespace. 2015-08-17 18:45:02 +02:00
Axel Naumann
7217f8099b Silence *calling* unresolved symbols. Handing it out already complains. 2015-08-17 18:45:02 +02:00
Axel Naumann
4b08f20793 Fix runtime / PCH incompatibility. 2015-06-26 14:44:19 +02:00
Axel Naumann
714df9c374 Revert "Annotate fwd decls with the header containing the decl, not the top-most include."
This reverts commit 125a93e0e3562dac5d5a0429ce49a2b625025c26.
It fails in the following case (roottest/root/io/evolution/pragma_read):
dictionary for a/b.h which includes a/c.h as #include "c.h"
This will add a fwd decl with annotation "c.h", but this header cannot
be found. Instead we'd need "a/c.h"...
2015-06-23 21:30:17 +02:00
Axel Naumann
cfd091955e Pass pthread to CIFactory; enable it in LangOpts. 2015-06-23 21:30:17 +02:00
Axel Naumann
3d4bb2b954 Fix fwd-decl detection and loops. 2015-06-23 11:13:16 +02:00
Axel Naumann
13dae8ee6b The RecursiveASTVisitor now calls Visit of bases itself. 2015-06-23 11:13:16 +02:00
Axel Naumann
1718483b7e Unload fwd decls of enums; redeclaring definitions fails. 2015-06-23 11:13:16 +02:00
Axel Naumann
4834289abd Annotate fwd decls with the header containing the decl, not the top-most include. 2015-06-18 16:01:47 +02:00
Bertrand Bellenot
3eed26e5a5 Fix load error reported on the forum (https://root.cern.ch/phpBB3/viewtopic.php?f=21&t=19840) 2015-06-17 10:50:29 +02:00
Axel Naumann
9ac315678b Fix for standalone cling build where CLANG_MAJOR is undefined (Thanks, Pere!). 2015-06-12 15:01:10 +02:00
Bertrand Bellenot
b5b37f564c Add a funtion to check if a file is a DLL, using proper WIN32 API 2015-06-09 17:22:06 +02:00
Axel Naumann
1c190f711f RevertTransaction() changes parent: assert on m_Transactions.back() first. 2015-06-09 11:03:18 +02:00
Axel Naumann
331a71cd2d Provide a valid SourceLoc - template instantiation needs it (ROOT-7364). 2015-06-08 18:10:01 +02:00
Axel Naumann
dc2047e7c4 Replace Transaction::reset() by ~Transaction(). Replace RefillPool by new Transaction.
Simplifies code, removes duplication.
2015-06-08 14:58:29 +02:00
Axel Naumann
886f586b08 Add assert; spelling. 2015-06-08 14:58:27 +02:00
Axel Naumann
439869b8c2 Use magic ExeUnload handle to tag "nothing to be unloaded".
This disambiguates a transaction without JITted module from one with JITted code.
Only the latter should be unloaded.
2015-06-08 14:58:27 +02:00
Axel Naumann
44ee56b7a1 Also unload modules that are queued for JITting. 2015-06-08 14:58:25 +02:00
Axel Naumann
e21b7319f3 Fix var name typo in find_first_not_of; combine if-s. 2015-06-08 11:20:18 +02:00
Axel Naumann
14719848cc Do not shadow parameter name (Coverity 60786). 2015-06-07 20:54:00 +02:00
Axel Naumann
7b0cae3aef Use non-shadowing param name (Coverity 61660). 2015-06-07 20:53:59 +02:00
Axel Naumann
77b6a92f5c Handle npos / not found, 2nd occurrence (Coverity 55587). 2015-06-07 20:38:21 +02:00
Axel Naumann
4e4ff52556 Handle npos / not found (Coverity 55587). 2015-06-07 20:38:20 +02:00
Axel Naumann
9e100c5dc5 Handle npos / not found (Coverity 55588); indentation; local vars. 2015-06-07 20:38:18 +02:00
Axel Naumann
926f9072ea Unbalanced store/compare can be usage error; diagnose, not assert. 2015-06-07 20:38:15 +02:00
Elisavet Sakellari
bfa9947c5a Implement search path cling pragma / ROOT macros (ROOT-7269). 2015-06-04 16:40:08 +02:00
Axel Naumann
a1d3eabd7e Revert "Remove dupe code: CurT->setIssuedDiags() already done in endTransaction()."
ParseResult could be failure withous Diags noticing.

This reverts commit 6d0a73cb0acb3cbb62460759bc17e85ff9aba53f.
2015-06-04 12:05:04 +02:00
Axel Naumann
5cfdd233c2 Test for ROOT-7295. 2015-06-04 11:30:15 +02:00
Axel Naumann
816232980c Delay resetting Diags until the Module has been released by Codegen. 2015-06-04 09:56:12 +02:00
Axel Naumann
6fc85c1883 Remove dupe code: CurT->setIssuedDiags() already done in endTransaction(). 2015-06-04 09:56:10 +02:00
Axel Naumann
aa24ff9e20 Do not leak on error (Coverity). 2015-06-03 11:01:27 +02:00
Bertrand Bellenot
15dda8ada2 Fix object format on Windows (thanks Axel for the hint!)
Solves the following error on Windows (as reported on the forum: https://root.cern.ch/phpBB3/viewtopic.php?f=21&t=19033):
[cling]$ int i = 0;
>>> Caught an interpreter exception!
>>> Incompatible object format!
2015-05-28 15:17:02 +02:00