1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00
llvm-mirror/test/MC/ARM/inline-asm-srcloc.ll
Sanne Wouda ef778d0fcb [Assembler] Add test for !srcloc references in assembler diags
Summary:
clang adds !srcloc metadata to inline assembly in LLVM bitcode generated
for inline assembly in C.  The value of this !srcloc is passed to the
diagnostics handler if the inline assembly generates a diagnostic.
clang is able to turn this cookie back to a location in the C source
file.

To test this functionality without a dependency, make llc print the
!srcloc metadata if it is present.  The added test uses this mechanism
to test that the correct !srclocs are passed to the diag handler.

Reviewers: rengolin, rnk, echristo, grosbach, mehdi_amini

Reviewed By: mehdi_amini

Subscribers: mehdi_amini, llvm-commits

Differential Revision: https://reviews.llvm.org/D30167

llvm-svn: 296465
2017-02-28 10:34:48 +00:00

38 lines
1.5 KiB
LLVM

; 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}