Xcode 5 crashes if lldb stops at breakpoint if long c++ template lists are present.
authorGreg Clayton <gclayton@apple.com>
Fri, 4 Apr 2014 18:15:18 +0000 (18:15 +0000)
committerGreg Clayton <gclayton@apple.com>
Fri, 4 Apr 2014 18:15:18 +0000 (18:15 +0000)
commitd20deac32d909425440a765879a11386bc5b60a7
tree654196d57c05c359ef2294bae0e127c9d721cfc3
parentfb7936d07c167d232e3a3aca3b8549b2c5d6761e
Xcode 5 crashes if lldb stops at breakpoint if long c++ template lists are present.

This fix reduces the stack size of SymbolFileDWARF::ParseType(). It seems that clang is not very good at sharing locations on the stack with local variables in large functions that have many blocks and each variable gets unique locations. The reduction in size was done by:
1 - removing some large locals that were default constructed by not used
2 - Placing some larger local variables into std::unique_ptr<> to make them on the heap
3 - removing local variables there were large and being populated but not being used
4 - reducing the size of some typedefs to llvm::SmallVector<T, N> so that N wasn’t excessively large

<rdar://problem/16431645>

llvm-svn: 205640
lldb/include/lldb/Symbol/ClangASTContext.h
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h