[llvm-commits] [llvm] r169456 - in /llvm/trunk: include/llvm/MC/MCContext.h lib/CodeGen/MachineModuleInfo.cpp lib/MC/MCContext.cpp
NAKAMURA Takumi
geek4civic at gmail.com
Wed Dec 5 18:18:42 PST 2012
Reverted in r169462.
I can reproduce failures with vg.
...Takumi
2012/12/6 Chandler Carruth <chandlerc at google.com>:
> This patch doesn't appear to do the right thing w/ memory management.
>
> http://lab.llvm.org:8011/builders/llvm-ppc64-linux1/builds/2258
>
> Please revert so we can get our builds back.
>
> Does it pass under Valgrind or other memory safety tools? Those are likely
> to be able to reproduce these types of failures.
>
>
> On Wed, Dec 5, 2012 at 4:50 PM, Pedro Artigas <partigas at apple.com> wrote:
>>
>> Author: partigas
>> Date: Wed Dec 5 18:50:55 2012
>> New Revision: 169456
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=169456&view=rev
>> Log:
>>
>> change MCContext to work on the doInitialization/doFinalization model
>>
>> reviewed by Evan Cheng <evan.cheng at apple.com>
>>
>>
>> Modified:
>> llvm/trunk/include/llvm/MC/MCContext.h
>> llvm/trunk/lib/CodeGen/MachineModuleInfo.cpp
>> llvm/trunk/lib/MC/MCContext.cpp
>>
>> Modified: llvm/trunk/include/llvm/MC/MCContext.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCContext.h?rev=169456&r1=169455&r2=169456&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/MC/MCContext.h (original)
>> +++ llvm/trunk/include/llvm/MC/MCContext.h Wed Dec 5 18:50:55 2012
>> @@ -154,6 +154,17 @@
>>
>> void setAllowTemporaryLabels(bool Value) { AllowTemporaryLabels =
>> Value; }
>>
>> + /// @name Module Lifetime Management
>> + /// @{
>> +
>> + /// doInitialization - prepare to process a new module
>> + void doInitialization();
>> +
>> + /// doFinalization - clean up state from the current module
>> + void doFinalization();
>> +
>> + /// @}
>> +
>> /// @name Symbol Management
>> /// @{
>>
>>
>> Modified: llvm/trunk/lib/CodeGen/MachineModuleInfo.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineModuleInfo.cpp?rev=169456&r1=169455&r2=169456&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/MachineModuleInfo.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/MachineModuleInfo.cpp Wed Dec 5 18:50:55 2012
>> @@ -270,6 +270,9 @@
>> }
>>
>> bool MachineModuleInfo::doInitialization(Module &M) {
>> +
>> + Context.doInitialization();
>> +
>> ObjFileMMI = 0;
>> CompactUnwindEncoding = 0;
>> CurCallSite = 0;
>> @@ -291,6 +294,8 @@
>> delete AddrLabelSymbols;
>> AddrLabelSymbols = 0;
>>
>> + Context.doFinalization();
>> +
>> return false;
>> }
>>
>>
>> Modified: llvm/trunk/lib/MC/MCContext.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCContext.cpp?rev=169456&r1=169455&r2=169456&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/MC/MCContext.cpp (original)
>> +++ llvm/trunk/lib/MC/MCContext.cpp Wed Dec 5 18:50:55 2012
>> @@ -44,23 +44,48 @@
>> SecureLogFile = getenv("AS_SECURE_LOG_FILE");
>> SecureLog = 0;
>> SecureLogUsed = false;
>> +}
>>
>> +MCContext::~MCContext() {
>> + // NOTE: The symbols are all allocated out of a bump pointer allocator,
>> + // we don't need to free them here.
>> +
>> + // If the stream for the .secure_log_unique directive was created free
>> it.
>> + delete (raw_ostream*)SecureLog;
>> +}
>> +
>>
>> +//===----------------------------------------------------------------------===//
>> +// Module Lifetime Management
>>
>> +//===----------------------------------------------------------------------===//
>> +
>> +void MCContext::doInitialization() {
>> + NextUniqueID = 0;
>> + AllowTemporaryLabels = true;
>> DwarfLocSeen = false;
>> GenDwarfForAssembly = false;
>> GenDwarfFileNumber = 0;
>> }
>>
>> -MCContext::~MCContext() {
>> - // NOTE: The symbols are all allocated out of a bump pointer allocator,
>> - // we don't need to free them here.
>> +void MCContext::doFinalization() {
>> + UsedNames.clear();
>> + Symbols.clear();
>> + Allocator.Reset();
>> + Instances.clear();
>> + MCDwarfFiles.clear();
>> + MCDwarfDirs.clear();
>> + MCGenDwarfLabelEntries.clear();
>> + DwarfDebugFlags = StringRef();
>> + MCLineSections.clear();
>> + MCLineSectionOrder.clear();
>> + CurrentDwarfLoc = MCDwarfLoc(0,0,0,DWARF2_FLAG_IS_STMT,0,0);
>>
>> // If we have the MachO uniquing map, free it.
>> delete (MachOUniqueMapTy*)MachOUniquingMap;
>> delete (ELFUniqueMapTy*)ELFUniquingMap;
>> delete (COFFUniqueMapTy*)COFFUniquingMap;
>> -
>> - // If the stream for the .secure_log_unique directive was created free
>> it.
>> - delete (raw_ostream*)SecureLog;
>> + MachOUniquingMap = 0;
>> + ELFUniquingMap = 0;
>> + COFFUniquingMap = 0;
>> }
>>
>>
>> //===----------------------------------------------------------------------===//
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: vg.log
Type: application/octet-stream
Size: 23051 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20121206/f7b6faa1/attachment.obj>
More information about the llvm-commits
mailing list