diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-12-01 23:24:18 -0500 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-12-01 23:24:18 -0500 |
commit | 692bf73a7a379229dd55bb596a620693c20b5a42 (patch) | |
tree | 03eb7f5e7056c5811bcf2467d1507072df53e930 /lib/Target/CppBackend/CPPBackend.cpp | |
parent | be03022b89d4f4cd59a2122b7286412721bf48c4 (diff) |
differentiate external vars from funcs
Diffstat (limited to 'lib/Target/CppBackend/CPPBackend.cpp')
-rw-r--r-- | lib/Target/CppBackend/CPPBackend.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/lib/Target/CppBackend/CPPBackend.cpp b/lib/Target/CppBackend/CPPBackend.cpp index ad03cd0adf..62693ddabb 100644 --- a/lib/Target/CppBackend/CPPBackend.cpp +++ b/lib/Target/CppBackend/CPPBackend.cpp @@ -138,7 +138,7 @@ namespace { HeapData GlobalData32; HeapData GlobalData64; GlobalAddressMap GlobalAddresses; - NameSet Externals; + NameSet ExternalVars, ExternalFuncs; NameSet Declares; std::string PostSets; @@ -244,7 +244,7 @@ namespace { // We don't have a constant to emit here, so we must emit a postSet // All postsets are of external values, so they are pointers, hence 32-bit std::string Name = getOpName(V); - Externals.insert(Name); + ExternalVars.insert(Name); PostSets += "HEAP32[" + utostr(AbsoluteTarget>>2) + "] = " + Name + ';'; return 0; // emit zero in there for now, until the postSet } @@ -259,7 +259,7 @@ namespace { if (const GlobalValue *GV = dyn_cast<GlobalValue>(Ptr)) { if (GV->hasExternalLinkage()) { std::string Name = getOpName(Ptr); - Externals.insert(Name); + ExternalVars.insert(Name); return Name; } } @@ -2340,9 +2340,21 @@ void CppWriter::printModuleBody() { Out << "\"" + *I + "\""; } Out << "],"; - Out << "\"externs\": ["; + Out << "\"externVars\": ["; first = true; - for (NameSet::iterator I = Externals.begin(), E = Externals.end(); + for (NameSet::iterator I = ExternalVars.begin(), E = ExternalVars.end(); + I != E; ++I) { + if (first) { + first = false; + } else { + Out << ", "; + } + Out << "\"" + *I + "\""; + } + Out << "],"; + Out << "\"externFuncs\": ["; + first = true; + for (NameSet::iterator I = ExternalFuncs.begin(), E = ExternalFuncs.end(); I != E; ++I) { if (first) { first = false; |