Changes in directory llvm/lib/ExecutionEngine:
ExecutionEngine.cpp updated: 1.108 -> 1.109 --- Log message: Avoid memory leakage by having caller construct the APInt for the destination value of LoadValueFromMemory. --- Diffs of the changes: (+4 -5) ExecutionEngine.cpp | 9 ++++----- 1 files changed, 4 insertions(+), 5 deletions(-) Index: llvm/lib/ExecutionEngine/ExecutionEngine.cpp diff -u llvm/lib/ExecutionEngine/ExecutionEngine.cpp:1.108 llvm/lib/ExecutionEngine/ExecutionEngine.cpp:1.109 --- llvm/lib/ExecutionEngine/ExecutionEngine.cpp:1.108 Sat Mar 3 00:18:03 2007 +++ llvm/lib/ExecutionEngine/ExecutionEngine.cpp Sat Mar 3 02:36:29 2007 @@ -578,9 +578,9 @@ /// FIXME: document /// -GenericValue ExecutionEngine::LoadValueFromMemory(GenericValue *Ptr, +void ExecutionEngine::LoadValueFromMemory(GenericValue &Result, + GenericValue *Ptr, const Type *Ty) { - GenericValue Result; if (getTargetData()->isLittleEndian()) { switch (Ty->getTypeID()) { case Type::IntegerTyID: { @@ -605,7 +605,7 @@ ((uint64_t)Ptr->Untyped[6] << 48) | ((uint64_t)Ptr->Untyped[7] << 56); } else - Result.APIntVal = new APInt(BitWidth, BitWidth/64, (uint64_t*)Ptr); + *(Result.APIntVal) = APInt(BitWidth, BitWidth/64, (uint64_t*)Ptr); break; } Load4BytesLittleEndian: @@ -657,7 +657,7 @@ ((uint64_t)Ptr->Untyped[1] << 48) | ((uint64_t)Ptr->Untyped[0] << 56); } else - Result.APIntVal = new APInt(BitWidth, BitWidth/64, (uint64_t*)Ptr); + *(Result.APIntVal) = APInt(BitWidth, BitWidth/64, (uint64_t*)Ptr); break; } Load4BytesBigEndian: @@ -686,7 +686,6 @@ abort(); } } - return Result; } // InitializeMemory - Recursive function to apply a Constant value into the _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits