diff options
author | Pavel Labath <labath@google.com> | 2018-04-09 08:41:57 +0000 |
---|---|---|
committer | Pavel Labath <labath@google.com> | 2018-04-09 08:41:57 +0000 |
commit | 889bf9fe007c0915d8860bbc3ec877692792dd45 (patch) | |
tree | c2d9dbe308173d9cf743a97030d30066347782f0 /llvm/lib/Transforms/Utils/LoopUtils.cpp | |
parent | 1f4f4d9a080cc9ea27c1040ec1c7341a29d77487 (diff) | |
download | llvm-889bf9fe007c0915d8860bbc3ec877692792dd45.zip llvm-889bf9fe007c0915d8860bbc3ec877692792dd45.tar.gz llvm-889bf9fe007c0915d8860bbc3ec877692792dd45.tar.bz2 |
[CodeGen/AccelTable]: Don't emit accelerator entries for functions with no names
Summary:
We were emitting accelerator entries for functions with no name, which
is contrary to the DWARF v5 spec: "All other (i.e., *not*
DW_TAG_namespace) debugging information entries without a DW_AT_name
attribute are excluded." Besides that, a name table entry with an empty
string as a key is fairly useless.
We can sometimes end up with functions which have a DW_AT_linkage_name but no
DW_AT_name. One such example is the global-constructor-initialization functions,
which C++ compilers synthesize for each compilation unit with global
constructors.
A very strict reading of the DWARF v5 spec would suggest that we should not even
emit the accelerator entry for the linkage name in this case, but I don't think
we should go that far.
I found this when running the dwarf verifier over llvm codebase compiled
with DWARF v5 accelerator tables.
Reviewers: JDevlieghere, aprantl, dblaikie
Subscribers: vleschuk, clayborg, echristo, probinson, llvm-commits
Differential Revision: https://reviews.llvm.org/D45367
llvm-svn: 329552
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopUtils.cpp')
0 files changed, 0 insertions, 0 deletions