[llvm-commits] [llvm-gcc-4.2] r52476 - in /llvm-gcc-4.2/trunk/gcc: llvm-backend.cpp llvm-debug.cpp llvm-debug.h
Bill Wendling
isanbard at gmail.com
Wed Jun 18 17:18:40 PDT 2008
Author: void
Date: Wed Jun 18 19:18:40 2008
New Revision: 52476
URL: http://llvm.org/viewvc/llvm-project?rev=52476&view=rev
Log:
Better fix for the memory smasher. Delete and recreate the TheDebugInfo object
when deleting and recreating the TheModule object.
Modified:
llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp
llvm-gcc-4.2/trunk/gcc/llvm-debug.cpp
llvm-gcc-4.2/trunk/gcc/llvm-debug.h
Modified: llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp?rev=52476&r1=52475&r2=52476&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp Wed Jun 18 19:18:40 2008
@@ -203,7 +203,6 @@
RegisterRegAlloc::setDefault(createLocalRegisterAllocator);
if (!optimize && debug_info_level > DINFO_LEVEL_NONE)
- // TheDebugInfo is taking ownership of TheModule.
TheDebugInfo = new DebugInfo(TheModule);
}
@@ -227,9 +226,8 @@
void llvm_pch_read(const unsigned char *Buffer, unsigned Size) {
std::string ModuleName = TheModule->getModuleIdentifier();
- // Don't delete the module if the debug info isn't done with it yet.
- if (!TheDebugInfo || TheDebugInfo->getModule() != TheModule)
- delete TheModule;
+ delete TheModule;
+ delete TheDebugInfo;
clearTargetBuiltinCache();
@@ -238,6 +236,7 @@
std::string ErrMsg;
TheModule = ParseBitcodeFile(MB, &ErrMsg);
+ TheDebugInfo = new DebugInfo(TheModule);
delete MB;
if (!TheModule) {
Modified: llvm-gcc-4.2/trunk/gcc/llvm-debug.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-debug.cpp?rev=52476&r1=52475&r2=52476&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-debug.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-debug.cpp Wed Jun 18 19:18:40 2008
@@ -225,10 +225,6 @@
SR.setModule(M);
}
-DebugInfo::~DebugInfo() {
- delete M;
-}
-
/// getValueFor - Return a llvm representation for a given debug information
/// descriptor.
Value *DebugInfo::getValueFor(DebugInfoDesc *DD) {
Modified: llvm-gcc-4.2/trunk/gcc/llvm-debug.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-debug.h?rev=52476&r1=52475&r2=52476&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-debug.h (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-debug.h Wed Jun 18 19:18:40 2008
@@ -77,12 +77,10 @@
public:
DebugInfo(Module *m);
- ~DebugInfo();
// Accessors.
void setLocationFile(const char *FullPath) { CurFullPath = FullPath; }
void setLocationLine(int LineNo) { CurLineNo = LineNo; }
- const Module *getModule() const { return M; }
/// getValueFor - Return a llvm representation for a given debug information
/// descriptor.
More information about the llvm-commits
mailing list