<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bcm5719-llvm/lldb/source/Plugins/Language/CPlusPlus, branch meklort-10.0.1</title>
<subtitle>Project Ortega BCM5719 LLVM</subtitle>
<id>https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1</id>
<link rel='self' href='https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1'/>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/'/>
<updated>2019-12-12T19:53:24+00:00</updated>
<entry>
<title>[Target] Remove Target::GetScratchClangASTContext</title>
<updated>2019-12-12T19:53:24+00:00</updated>
<author>
<name>Alex Langford</name>
<email>apl@fb.com</email>
</author>
<published>2019-11-14T21:41:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=3031818a2e9fca1e53cd882ccfcc3718699991b4'/>
<id>urn:sha1:3031818a2e9fca1e53cd882ccfcc3718699991b4</id>
<content type='text'>
Target doesn't really need to know about ClangASTContext more than any
other TypeSystem. We can create a method ClangASTContext::GetScratch for
anything who needs a ClangASTContext specifically instead of just a
generic TypeSystem.
</content>
</entry>
<entry>
<title>[lldb/cpluspluslanguage] Add constructor substitutor</title>
<updated>2019-12-05T11:44:51+00:00</updated>
<author>
<name>Pavel Labath</name>
<email>pavel@labath.sk</email>
</author>
<published>2019-11-26T15:36:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=c16f0b18c13e88fedaa510bc2442bb693a6230c8'/>
<id>urn:sha1:c16f0b18c13e88fedaa510bc2442bb693a6230c8</id>
<content type='text'>
Summary:
This patch adds code which will substitute references to the full object
constructors/destructors with their base object versions.

Like all substitutions in this category, this operation is not really
sound, but doing this in a more precise way allows us to get rid of a
much larger hack -- matching function according to their demangled
names, which effectively does the same thing, but also much more.

This is a (very late) follow-up to D54074.

Background: clang has an optimization which can eliminate full object
structors completely, if they are found to be equivalent to their base
object versions. It does this because it assumes they can be regenerated
on demand in the compile unit that needs them (e.g., because they are
declared inline). However, this doesn't work for the debugging scenario,
where we don't have the structor bodies available -- we pretend all
constructors are defined out-of-line as far as clang is concerned. This
causes clang to emit references to the (nonexisting) full object
structors during expression evaluation.

Fun fact: This is not a problem on darwin, because the relevant
optimization is disabled to work around a linker bug.

Reviewers: teemperor, JDevlieghere

Subscribers: lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D70721
</content>
</entry>
<entry>
<title>Add a default copy-assignment or copy-constructor for -Wdeprecated-copy warnings.</title>
<updated>2019-12-05T04:35:32+00:00</updated>
<author>
<name>Eric Christopher</name>
<email>echristo@gmail.com</email>
</author>
<published>2019-12-05T04:34:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=5312139f779f9f18cc5fa1c4ce5e5c5c1e854e90'/>
<id>urn:sha1:5312139f779f9f18cc5fa1c4ce5e5c5c1e854e90</id>
<content type='text'>
</content>
</entry>
<entry>
<title>[lldb][DataFormatters] Support pretty printing std::string when built with -funsigned-char.</title>
<updated>2019-11-22T18:25:03+00:00</updated>
<author>
<name>Jordan Rupprecht</name>
<email>rupprecht@google.com</email>
</author>
<published>2019-11-22T18:25:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=506144da04b94d7d492ad34f7d3d81e8368677bb'/>
<id>urn:sha1:506144da04b94d7d492ad34f7d3d81e8368677bb</id>
<content type='text'>
Summary:
When built w/ `-funsigned-char`, `std::string` becomes equivalent to `std::basic_string&lt;unsigned char&gt;`, causing these formatters to not match. This patch adds overloads for both libstdc++ and libc++ string formatters that accepts unsigned char.

Motivated by the following example:

```
$ cat pretty_print.cc

template &lt;typename T&gt;
void print_val(T s) {
  std::cerr &lt;&lt; s &lt;&lt; '\n';  // Set a breakpoint here!
}

int main() {
  std::string val = "hello";
  print_val(val);
  return 0;
}
$ clang++ -stdlib=libc++ -funsigned-char -fstandalone-debug -g pretty_print.cc
$ lldb ./a.out -b -o 'b pretty_print.cc:6' -o r -o 'fr v'
...
(lldb) fr v
(std::__1::basic_string&lt;unsigned char, std::__1::char_traits&lt;unsigned char&gt;, std::__1::allocator&lt;unsigned char&gt; &gt;) s = {
  __r_ = {
    std::__1::__compressed_pair_elem&lt;std::__1::basic_string&lt;unsigned char, std::__1::char_traits&lt;unsigned char&gt;, std::__1::allocator&lt;unsigned char&gt; &gt;::__rep, 0, false&gt; = {
      __value_ = {
         = {
          __l = (__cap_ = 122511465736202, __size_ = 0, __data_ = 0x0000000000000000)
          __s = {
             = (__size_ = '\n', __lx = '\n')
            __data_ = {
              [0] = 'h'
              [1] = 'e'
              [2] = 'l'
              [3] = 'l'
              [4] = 'o'
              [5] = '\0'
...
```

Reviewers: labath, JDevlieghere, shafik

Subscribers: christof, lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D70517
</content>
</entry>
<entry>
<title>[LLDB][Formatters] Re-enable std::function formatter with fixes to improve non-cached lookup performance</title>
<updated>2019-11-12T19:30:18+00:00</updated>
<author>
<name>shafik</name>
<email>syaghmour@apple.com</email>
</author>
<published>2019-11-12T19:23:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=91e94a7015f14f78809e875c43acbd341d081479'/>
<id>urn:sha1:91e94a7015f14f78809e875c43acbd341d081479</id>
<content type='text'>
Performance issues lead to the libc++ std::function formatter to be disabled. We addressed some of those performance issues by adding caching see D67111
This PR fixes the first lookup performance by not using FindSymbolsMatchingRegExAndType(...) and instead finding the compilation unit the std::function wrapped callable should be in and then searching for the callable directly in the CU.

Differential Revision: https://reviews.llvm.org/D69913
</content>
</entry>
<entry>
<title>[LLDB] Fix handling for the clang name mangling extension for block invocations</title>
<updated>2019-11-06T22:20:00+00:00</updated>
<author>
<name>shafik</name>
<email>syaghmour@apple.com</email>
</author>
<published>2019-11-06T22:06:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=83393d27af6631d1df5c549feb214abbdd1d6054'/>
<id>urn:sha1:83393d27af6631d1df5c549feb214abbdd1d6054</id>
<content type='text'>
Add support for clangs  mangling extension for block invocations.

Differential Revision: https://reviews.llvm.org/D69738
</content>
</entry>
<entry>
<title>[LLDB] Fix for regression of test 'TestDataFormatterInvalidStdUniquePtr.py' introduced in r374195</title>
<updated>2019-10-09T21:15:48+00:00</updated>
<author>
<name>Cameron Desrochers</name>
<email>cameron@moodycamel.com</email>
</author>
<published>2019-10-09T21:15:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=745e57c5939e289789b9171e118b09c3c59c572a'/>
<id>urn:sha1:745e57c5939e289789b9171e118b09c3c59c572a</id>
<content type='text'>
Differential Revision: https://reviews.llvm.org/D68641

llvm-svn: 374231
</content>
</entry>
<entry>
<title>[LLDB] Fix for synthetic children memory leak</title>
<updated>2019-10-09T18:27:33+00:00</updated>
<author>
<name>Cameron Desrochers</name>
<email>cameron@moodycamel.com</email>
</author>
<published>2019-10-09T18:27:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=89386daa9571add3bc30311dc0902f82a1148a4c'/>
<id>urn:sha1:89386daa9571add3bc30311dc0902f82a1148a4c</id>
<content type='text'>
The lifetime of a ValueObject and all its derivative ValueObjects (children, clones, etc.) is managed by a ClusterManager. These objects are only destroyed when every shared pointer to any of the managed objects in the cluster is destroyed. This means that no object in the cluster can store a shared pointer to another object in the cluster without creating a memory leak of the entire cluster. However, some of the synthetic children front-end implementations do exactly this; this patch fixes that.

Differential Revision: https://reviews.llvm.org/D68641

llvm-svn: 374195
</content>
</entry>
<entry>
<title>Code cleanup: Change FormattersContainer::KeyType from SP to rvalue</title>
<updated>2019-09-04T09:47:18+00:00</updated>
<author>
<name>Jan Kratochvil</name>
<email>jan.kratochvil@redhat.com</email>
</author>
<published>2019-09-04T09:47:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=5aa1d81969fb1b91e5ab5be446a3a71bd2e1ecdc'/>
<id>urn:sha1:5aa1d81969fb1b91e5ab5be446a3a71bd2e1ecdc</id>
<content type='text'>
There is now std::shared_ptr passed around which is expensive for manycore
CPUs. Most of the times (except for 3 cases) it is now just std::moved with no
CPU locks needed. It also makes it possible to sort the keys (which is now not
needed much after D66398).

Differential revision: https://reviews.llvm.org/D67049

llvm-svn: 370863
</content>
</entry>
<entry>
<title>[lldb] Fix `TestDataFormatterStdList` regression</title>
<updated>2019-08-22T14:29:52+00:00</updated>
<author>
<name>Jan Kratochvil</name>
<email>jan.kratochvil@redhat.com</email>
</author>
<published>2019-08-22T14:29:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=b17d6c52fd4eaa5ae26b1ec5eea642d6d933ee37'/>
<id>urn:sha1:b17d6c52fd4eaa5ae26b1ec5eea642d6d933ee37</id>
<content type='text'>
Since D66174 I see failures of TestDataFormatterStdList in about 50% of runs on
Fedora 30 x86_64 libstdc++. I have found out that LLDB internally expects these
RegularExpressions to be matched in their alphabetical order:
	^std::(__cxx11::)?list&lt;.+&gt;(( )?&amp;)?$
	^std::__[[:alnum:]]+::list&lt;.+&gt;(( )?&amp;)?$

But since D66174 they are sometimes matched in reverse order. In fact it was
only some luck it worked before as there is internally
std::map&lt;lldb::RegularExpressionSP, FormatterImpl&gt; (FormattersContainer).

Differential Revision: https://reviews.llvm.org/D66398

llvm-svn: 369655
</content>
</entry>
</feed>
