Index: llvm/trunk/test/MC/ARM/inline-asm-srcloc.ll =================================================================== --- llvm/trunk/test/MC/ARM/inline-asm-srcloc.ll +++ llvm/trunk/test/MC/ARM/inline-asm-srcloc.ll @@ -0,0 +1,37 @@ +; RUN: not llc -filetype=obj 2>&1 -o /dev/null < %s | FileCheck %s + +; ModuleID = '/scratch/llvm/master/tools/clang/test/Misc/inline-asm-diags.c' +source_filename = "/scratch/llvm/master/tools/clang/test/Misc/inline-asm-diags.c" +target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64" +target triple = "armv7-arm-none-eabi" + +; Function Attrs: noinline nounwind +define void @foo2() #0 { +entry: + call void asm sideeffect " wibble", ""() #1, !srcloc !3 +; CHECK: note: !srcloc = 107 + ret void +} + +; Function Attrs: noinline nounwind +define void @foo() #0 { +entry: + call void asm sideeffect " .word -bar", ""() #1, !srcloc !4 +; CHECK: note: !srcloc = 181 + call void asm sideeffect " .word -foo", ""() #1, !srcloc !5 +; CHECK: note: !srcloc = 257 + ret void +} + +attributes #0 = { noinline nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="cortex-a8" "target-features"="+dsp,+neon,+strict-align,+vfp3" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #1 = { nounwind } + +!llvm.module.flags = !{!0, !1} +!llvm.ident = !{!2} + +!0 = !{i32 1, !"wchar_size", i32 4} +!1 = !{i32 1, !"min_enum_size", i32 4} +!2 = !{!"clang version 5.0.0 "} +!3 = !{i32 107} +!4 = !{i32 181} +!5 = !{i32 257} Index: llvm/trunk/tools/llc/llc.cpp =================================================================== --- llvm/trunk/tools/llc/llc.cpp +++ llvm/trunk/tools/llc/llc.cpp @@ -254,12 +254,16 @@ } static void InlineAsmDiagHandler(const SMDiagnostic &SMD, void *Context, - unsigned) { + unsigned LocCookie) { bool *HasError = static_cast(Context); if (SMD.getKind() == SourceMgr::DK_Error) *HasError = true; SMD.print(nullptr, errs()); + + // For testing purposes, we print the LocCookie here. + if (LocCookie) + errs() << "note: !srcloc = " << LocCookie << "\n"; } // main - Entry point for the llc compiler.