From: Ted Kremenek Date: Wed, 31 Oct 2007 18:23:21 +0000 (+0000) Subject: Added Serializer::EmitRef to deal with emitting arbitrary references. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=8aac61cff0f4c5f66412502771dd281696114ceb;p=oota-llvm.git Added Serializer::EmitRef to deal with emitting arbitrary references. Modified Serializer::EmitPtr to handle const pointers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43565 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Bitcode/Serialize.h b/include/llvm/Bitcode/Serialize.h index 72aac9d0ba4..be5adb85eaa 100644 --- a/include/llvm/Bitcode/Serialize.h +++ b/include/llvm/Bitcode/Serialize.h @@ -27,7 +27,7 @@ class Serializer { SmallVector Record; bool inBlock; - typedef DenseMap MapTy; + typedef DenseMap MapTy; MapTy PtrMap; public: @@ -42,7 +42,10 @@ public: void EmitCStr(const char* beg, const char* end); void EmitCStr(const char* cstr); - void EmitPtr(void* ptr) { EmitInt(getPtrId(ptr)); } + void EmitPtr(const void* ptr) { EmitInt(getPtrId(ptr)); } + + template + void EmitRef(const T& ref) { EmitPtr(&ref); } template void EmitOwnedPtr(T* ptr) { @@ -55,7 +58,7 @@ public: private: void EmitRecord(); inline bool inRecord() { return Record.size() > 0; } - unsigned getPtrId(void* ptr); + unsigned getPtrId(const void* ptr); }; } // end namespace llvm diff --git a/lib/Bitcode/Writer/Serialize.cpp b/lib/Bitcode/Writer/Serialize.cpp index a1d732047a6..58baf104c7a 100644 --- a/lib/Bitcode/Writer/Serialize.cpp +++ b/lib/Bitcode/Writer/Serialize.cpp @@ -57,7 +57,7 @@ void Serializer::EmitCStr(const char* s) { EmitCStr(s,s+strlen(s)); } -unsigned Serializer::getPtrId(void* ptr) { +unsigned Serializer::getPtrId(const void* ptr) { if (!ptr) return 0;