Index: llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp =================================================================== --- llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -87,6 +87,7 @@ #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/Format.h" #include "llvm/Support/MathExtras.h" +#include "llvm/Support/Path.h" #include "llvm/Support/TargetRegistry.h" #include "llvm/Support/Timer.h" #include "llvm/Support/raw_ostream.h" @@ -272,7 +273,8 @@ // don't, this at least helps the user find where a global came from. if (MAI->hasSingleParameterDotFile()) { // .file "foo.c" - OutStreamer->EmitFileDirective(M.getSourceFileName()); + OutStreamer->EmitFileDirective( + llvm::sys::path::filename(M.getSourceFileName())); } GCModuleInfo *MI = getAnalysisIfAvailable(); Index: llvm/trunk/test/CodeGen/X86/file-directive.ll =================================================================== --- llvm/trunk/test/CodeGen/X86/file-directive.ll +++ llvm/trunk/test/CodeGen/X86/file-directive.ll @@ -0,0 +1,13 @@ +; RUN: llc -mtriple=x86_64-linux-gnu -filetype=asm < %s | FileCheck %s --check-prefix=DIRECTIVE +; RUN: llc -mtriple=x86_64-linux-gnu -filetype=obj < %s | llvm-readobj -symbols | FileCheck %s --check-prefix=STT-FILE + +; DIRECTIVE: .file "foobar" +; STT-FILE: Name: foobar +; STT-FILE-NEXT: Value: 0x0 +; STT-FILE-NEXT: Size: 0 +; STT-FILE-NEXT: Binding: Local +; STT-FILE-NEXT: Type: File +; STT-FILE-NEXT: Other: 0 +; STT-FILE-NEXT: Section: Absolute + +source_filename = "/path/to/foobar"