Commit Graph

1901 Commits

Author SHA1 Message Date
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
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
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
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
Axel Naumann
7db73eb500 Reduce cling leakage to 0, according to valgrind. 2015-05-27 18:00:09 +02:00
Axel Naumann
9b61560c4a Extra paren against hex address followed by a dot. 2015-05-24 21:55:24 +02:00
Liza
99de1fe5c0 ROOT-7031 bug fix for illegal macros. 2015-05-21 20:24:10 +02:00
Axel Naumann
4ebef94da8 Unwrap (implicit) casts for fwd decls (ROOT-7276). 2015-05-18 15:24:09 +02:00
Bertrand Bellenot
4d4a4b1270 Fix compilation error on Windows (MSVC doesn't support m_AtExitFuncsSpinLock = ATOMIC_FLAG_INIT; in the class definition) 2015-05-18 11:42:19 +02:00
Axel Naumann
25b4369647 Only emit Value return placement new for CallInit (ROOT-7310). 2015-05-13 12:12:00 +02:00
Philippe Canal
67ffd34dd5 In GetPartiallyDesugaredTypeImpl fix type replacement.
When looking up in the list of type to be replaced by a typedef (basic_string -> string), use
the canonical type to make sure we have the right search (any sugar will make the search fail).
2015-05-08 19:46:12 +02:00