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
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits