[llvm-commits] [llvm] r62555 - /llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp

Devang Patel dpatel at apple.com
Wed Jan 21 09:49:18 PST 2009


On Jan 20, 2009, at 10:28 PM, Chris Lattner wrote:

>
> On Jan 19, 2009, at 4:58 PM, Devang Patel wrote:
>
>> Author: dpatel
>> Date: Mon Jan 19 18:58:55 2009
>> New Revision: 62555
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=62555&view=rev
>> Log:
>> Do not use DenseMap because the iterator is invalidated while
>> constructing types. After all there was a reason why std::map was
>> used initially!
>
> Aha!  Can you change the code to just not depend on this?

yup, we can.

>  In other
> words, instead of:
>
> DIE *&Entry = GVToDieMap[GV];
> ...
> something that could invalidate Entry
> ...
>
> Entry = ...
>
> Just do:
>
> DIE *&Entry = GVToDieMap[GV];
> ...
> something that could invalidate Entry
> ...
>
> GVToDieMap[GV] = ...
>
> ?
>
> DenseMap is much much faster for pointer pairs than std::map.

>
>
> -Chris
>
>>
>>
>>
>> Modified:
>>   llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
>>
>> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp?rev=62555&r1=62554&r2=62555&view=diff
>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp Mon Jan 19
>> 18:58:55 2009
>> @@ -779,11 +779,11 @@
>>
>>  /// GVToDieMap - Tracks the mapping of unit level debug informaton
>>  /// variables to debug information entries.
>> -  DenseMap<GlobalVariable *, DIE *> GVToDieMap;
>> +  std::map<GlobalVariable *, DIE *> GVToDieMap;
>>
>>  /// GVToDIEntryMap - Tracks the mapping of unit level debug
>> informaton
>>  /// descriptors to debug information entries using a DIEntry proxy.
>> -  DenseMap<GlobalVariable *, DIEntry *> GVToDIEntryMap;
>> +  std::map<GlobalVariable *, DIEntry *> GVToDIEntryMap;
>>
>>  /// Globals - A map of globally visible named entities for this
>> unit.
>>  ///
>>
>>
>> _______________________________________________
>> 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

-
Devang






More information about the llvm-commits mailing list