diff options
Diffstat (limited to 'lib/Target')
-rw-r--r-- | lib/Target/CppBackend/CPPBackend.cpp | 10 | ||||
-rw-r--r-- | lib/Target/CppBackend/CallHandlers.h | 8 |
2 files changed, 18 insertions, 0 deletions
diff --git a/lib/Target/CppBackend/CPPBackend.cpp b/lib/Target/CppBackend/CPPBackend.cpp index 8bdbc5852f..f43530e8b8 100644 --- a/lib/Target/CppBackend/CPPBackend.cpp +++ b/lib/Target/CppBackend/CPPBackend.cpp @@ -139,6 +139,7 @@ namespace { HeapData GlobalData64; GlobalAddressMap GlobalAddresses; NameSet Externals; + NameSet Declares; std::string PostSets; #include "CallHandlers.h" @@ -2282,6 +2283,15 @@ void CppWriter::printModuleBody() { Out << "\"" + I->getName() + "\""; } } + for (NameSet::iterator I = Declares.begin(), E = Declares.end(); + I != E; ++I) { + if (first) { + first = false; + } else { + Out << ", "; + } + Out << "\"" + *I + "\""; + } Out << "],"; Out << "\"externs\": ["; first = true; diff --git a/lib/Target/CppBackend/CallHandlers.h b/lib/Target/CppBackend/CallHandlers.h index 3fc7d9a875..34c8c9b9d0 100644 --- a/lib/Target/CppBackend/CallHandlers.h +++ b/lib/Target/CppBackend/CallHandlers.h @@ -30,13 +30,20 @@ DEF_CALL_HANDLER(llvm_nacl_atomic_store_i32, { }) DEF_CALL_HANDLER(llvm_memcpy_p0i8_p0i8_i32, { + Declares.insert("memcpy"); return CH___default__(CI, "_memcpy", 3) + "|0"; }) DEF_CALL_HANDLER(llvm_memset_p0i8_i32, { + Declares.insert("memmset"); return CH___default__(CI, "_memset", 3) + "|0"; }) +DEF_CALL_HANDLER(llvm_memmove_p0i8_p0i8_i32, { + Declares.insert("memmove"); + return CH___default__(CI, "_memmove", 3) + "|0"; +}) + // Setups void setupCallHandlers() { @@ -48,6 +55,7 @@ void setupCallHandlers() { SETUP_CALL_HANDLER(llvm_nacl_atomic_store_i32); SETUP_CALL_HANDLER(llvm_memcpy_p0i8_p0i8_i32); SETUP_CALL_HANDLER(llvm_memset_p0i8_i32); + SETUP_CALL_HANDLER(llvm_memmove_p0i8_p0i8_i32); } std::string handleCall(const CallInst *CI) { |