[llvm-dev] DIFile filenames containing directories

via llvm-dev llvm-dev at lists.llvm.org
Thu Nov 29 10:02:49 PST 2018



> -----Original Message-----
> From: aprantl at apple.com [mailto:aprantl at apple.com]
> Sent: Thursday, November 29, 2018 12:02 PM
> To: llvm-dev
> Cc: David Blaikie; Robinson, Paul; Davide Italiano
> Subject: DIFile filenames containing directories
> 
> I noticed that clang produces DIFiles that look like
> 
>    DIFile(filename: "src/test.c", directory: "/path/to/pwd")
> 
> at first I thought this must be a bug, but this could also be a space-
> saving optimization to unique the redundant $PWD prefix of all paths.
> 
> Is this a bug or a feature?

Based on extremely quick experiments, I think it's simple-minded and
not purposely factoring out common prefixes; directories are just PWD 
and -Ifoo, and filenames are the rest of the path, whether it comes 
from the command line or an #include directive.

Interestingly, I get different .debug_line sections depending on
compiling straight to object versus compiling to assembler and then 
assembling.  When we compile to object, all the directories get moved 
to the directory table. Assembler doesn't seem to do that.

But even in my Mr. Pedantic mode, it's hard to say it's wrong to put
directories into the file table. There's no semantic distinction in
DWARF, the consumer is expected to paste the strings together.

So, I don't think I'd call it a bug.
--paulr

> 
> -- adrian


More information about the llvm-dev mailing list