[PATCH] D55085: Avoid emitting redundant or unusable directories in DIFile metadata entries
Mikael Holmén via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Dec 10 04:00:55 PST 2018
uabelho added a comment.
Hi,
A late question about this change. I notice that this change sometimes gives me additional DIFiles in the clang output compared to before.
E.g. if I have a file
/tmp/bar/foo.c
containing just
void foo() {
}
and I stand in /tmp/ and do
clang -emit-llvm -S -g /tmp/bar/foo.c -o -
then I get two DIFiles in the output:
!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 8.0.0 (trunk 348738) (llvm/trunk 348737)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, nameTableKind: None)
!1 = !DIFile(filename: "/tmp/bar/foo.c", directory: "/tmp")
[...]
!8 = !DIFile(filename: "bar/foo.c", directory: "/tmp")
where !1 is only used in !DICompileUnit and !8 is used everywhere else. Before this change the only DIFile I got was
!1 = !DIFile(filename: "/tmp/bar/foo.c", directory: "/tmp")
so in the clang output we actually got more tuff with the change than before.
Also, for my out-of-tree target the two DIFiles later caused confusion for gdb since there then was a mismatch between the compilation unit name
in the debug line section and in the debug info section. Due to that mismatch gdb dropped the prologue_end so in cases where foo had a more interesting body
I would stop at the wrong place if I set a breakpoint with
break foo
I haven't seen the problem with a breakpoint ending up at the wrong place when compiling for X86 though and I'm not sure
if it's because I haven't tried hard enough or if it's something special with my backend.
Anyway, is the above as expected or should the filename in !1 be shortened as well?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D55085/new/
https://reviews.llvm.org/D55085
More information about the cfe-commits
mailing list