Alp Toker
2014-Jun-29 22:47 UTC
[LLVMdev] r211844 - Add test coverage for .bc input in the frontend
On 30/06/2014 00:53, Rafael EspĂndola wrote:>> Any idea why ELF assembly emits this special initial '.file' directive >> that's derived from the active tool's input filename rather than IR, as with >> subsequent '.file' directives? (Or, indeed why the other asm formats don't >> share the behaviour?) > It is confusing. There are two .file directives in ELF: > > .file foo -> this produces a FILE symbol with that name. > .file num foo -> this creates a debug info file with number num. > > I agree that the ".file foo" directive should not use the IL name and > should instead be encoded in the IL, like we do for .ident.CCing in llvmdev.. The only test coverage for this feature is CodeGen/X86/GC/ocaml-gc.ll where it contains an equally unhelpful value: -; CHECK-NEXT: .file "<stdin>" So I agree, it looks like this is breaking an invariant in the compilation pipeline by causing us to not generate identical output from identical inputs. Also like an information leak to emit file paths on the build system when they weren't requested. If it's been wrong and untested so long, might it be best to just remove the feature? If needed, a new IL name could be added as an explicit feature later on, but the current approach of forcing the module name to be embedded in output seems flawed. --- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -199,13 +199,6 @@ bool AsmPrinter::doInitialization(Module &M) { // Allow the target to emit any magic that it wants at the start of the file. EmitStartOfAsmFile(M); - // Very minimal debug info. It is ignored if we emit actual debug info. If we - // don't, this at least helps the user find where a global came from. - if (MAI->hasSingleParameterDotFile()) { - // .file "foo.c" - OutStreamer.EmitFileDirective(M.getModuleIdentifier()); - } - GCModuleInfo *MI = getAnalysisIfAvailable<GCModuleInfo>(); assert(MI && "AsmPrinter didn't require GCModuleInfo?"); for (auto &I : *MI) -- http://www.nuanti.com the browser experts