diff options
author | Vitaly Buka <vitalybuka@google.com> | 2016-10-18 23:29:41 +0000 |
---|---|---|
committer | Vitaly Buka <vitalybuka@google.com> | 2016-10-18 23:29:41 +0000 |
commit | d88e52012bd8e73f06621658b33cecb7ffa150a6 (patch) | |
tree | 209cecc4568641d6b50ca5883ae4a22680d6f8a2 /llvm/lib/Transforms/Utils/ASanStackFrameLayout.cpp | |
parent | f8ac3d26d5a10d050f98baf729a5a3ec1e864dcb (diff) | |
download | llvm-d88e52012bd8e73f06621658b33cecb7ffa150a6.zip llvm-d88e52012bd8e73f06621658b33cecb7ffa150a6.tar.gz llvm-d88e52012bd8e73f06621658b33cecb7ffa150a6.tar.bz2 |
[asan] Append line number to variable name if line is available and in the same file as the function.
PR30498
Reviewers: eugenis
Differential Revision: https://reviews.llvm.org/D25715
llvm-svn: 284546
Diffstat (limited to 'llvm/lib/Transforms/Utils/ASanStackFrameLayout.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/ASanStackFrameLayout.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Utils/ASanStackFrameLayout.cpp b/llvm/lib/Transforms/Utils/ASanStackFrameLayout.cpp index bdd55a2..dc226b2 100644 --- a/llvm/lib/Transforms/Utils/ASanStackFrameLayout.cpp +++ b/llvm/lib/Transforms/Utils/ASanStackFrameLayout.cpp @@ -12,6 +12,7 @@ //===----------------------------------------------------------------------===// #include "llvm/Transforms/Utils/ASanStackFrameLayout.h" #include "llvm/ADT/SmallString.h" +#include "llvm/IR/DebugInfo.h" #include "llvm/Support/MathExtras.h" #include "llvm/Support/raw_ostream.h" #include <algorithm> @@ -75,13 +76,17 @@ ComputeASanStackFrameLayout(SmallVectorImpl<ASanStackVariableDescription> &Vars, size_t Alignment = std::max(Granularity, Vars[i].Alignment); (void)Alignment; // Used only in asserts. size_t Size = Vars[i].Size; - const char *Name = Vars[i].Name; + std::string Name = Vars[i].Name; assert((Alignment & (Alignment - 1)) == 0); assert(Layout.FrameAlignment >= Alignment); assert((Offset % Alignment) == 0); assert(Size > 0); assert(Vars[i].LifetimeSize <= Size); - StackDescription << " " << Offset << " " << Size << " " << strlen(Name) + if (Vars[i].Line) { + Name += ":"; + Name += std::to_string(Vars[i].Line); + } + StackDescription << " " << Offset << " " << Size << " " << Name.size() << " " << Name; size_t NextAlignment = IsLast ? Granularity : std::max(Granularity, Vars[i + 1].Alignment); |