aboutsummaryrefslogtreecommitdiff
path: root/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp
diff options
context:
space:
mode:
authorPavel Labath <labath@google.com>2018-05-14 11:02:23 +0000
committerPavel Labath <labath@google.com>2018-05-14 11:02:23 +0000
commitf639eb055330ee52bcf5d7acef628f4bab3158a0 (patch)
tree6dccb28aefe3775ed31ccaaa88f1ea010472a75f /lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp
parentfba03620968065984d5eb183de55b83a8ce21c4c (diff)
downloadllvm-f639eb055330ee52bcf5d7acef628f4bab3158a0.zip
llvm-f639eb055330ee52bcf5d7acef628f4bab3158a0.tar.gz
llvm-f639eb055330ee52bcf5d7acef628f4bab3158a0.tar.bz2
[CodeGen] Disable aggressive structor optimizations at -O0
Summary: Removing the full structor and replacing all usages with the base one can degrade debug quality as it will leave the debugger unable to locate the full object structor. This is apparent when evaluating an expression in the debugger which requires constructing an object of class which has had this optimization applied to it. When compiling the expression, we pretend that the class and its methods have been defined in another compilation unit, so the expression compiler assumes the structor definition must be available. This didn't use to be the case for structors with internal linkage. Less aggressive optimizations like emitting the full structor as an alias remain in place, as they do not cause the structor symbol to disappear completely. This improves debug quality on non-darwin platforms (darwin does not have -mconstructor-aliases on by default, so it is spared these problems) and enable us to remove some workarounds from LLDB which attempt to mitigate this issue. Reviewers: rjmccall, aprantl Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D46685 llvm-svn: 332228
Diffstat (limited to 'lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp')
0 files changed, 0 insertions, 0 deletions