summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/backend-unsupported-error.ll
diff options
context:
space:
mode:
authorOliver Stannard <oliver.stannard@arm.com>2016-01-27 17:30:28 +0000
committerOliver Stannard <oliver.stannard@arm.com>2016-01-27 17:30:28 +0000
commit5e03a4b8370d1103489b3d711a00f2d504628570 (patch)
tree6adb6469bb81dd049247b5e2ac658b302e62dbc5 /clang/test/CodeGen/backend-unsupported-error.ll
parent81e05525e3213a5421a8c458a59b19128f5487a4 (diff)
downloadbcm5719-llvm-5e03a4b8370d1103489b3d711a00f2d504628570.tar.gz
bcm5719-llvm-5e03a4b8370d1103489b3d711a00f2d504628570.zip
Add backend dignostic printer for unsupported features
The related LLVM patch adds a backend diagnostic type for reporting unsupported features, this adds a printer for them to clang. In the case where debug location information is not available, I've changed the printer to report the location as the first line of the function, rather than the closing brace, as the latter does not give the user any information. This also affects optimisation remarks. Differential Revision: http://reviews.llvm.org/D16591 llvm-svn: 258950
Diffstat (limited to 'clang/test/CodeGen/backend-unsupported-error.ll')
-rw-r--r--clang/test/CodeGen/backend-unsupported-error.ll45
1 files changed, 45 insertions, 0 deletions
diff --git a/clang/test/CodeGen/backend-unsupported-error.ll b/clang/test/CodeGen/backend-unsupported-error.ll
new file mode 100644
index 00000000000..467897b5c93
--- /dev/null
+++ b/clang/test/CodeGen/backend-unsupported-error.ll
@@ -0,0 +1,45 @@
+; RUN: not %clang_cc1 -triple r600-unknown-unknown -S -o - %s 2>&1 | FileCheck %s
+; REQUIRES: amdgpu-registered-target
+
+; This is to check that backend errors for unsupported features are formatted correctly
+
+; CHECK: error: test.c:2:20: in function bar i32 (): unsupported call to function foo.2
+
+target triple = "r600-unknown-unknown"
+
+; Function Attrs: nounwind uwtable
+define i32 @bar() #0 !dbg !4 {
+entry:
+ %call = call i32 @foo(), !dbg !12
+ ret i32 %call, !dbg !13
+}
+
+; Function Attrs: nounwind uwtable
+define i32 @foo() #0 !dbg !8 {
+entry:
+ %call = call i32 @bar(), !dbg !14
+ ret i32 %call, !dbg !15
+}
+
+attributes #0 = { nounwind uwtable "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-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
+
+!llvm.dbg.cu = !{!0}
+!llvm.module.flags = !{!9, !10}
+!llvm.ident = !{!11}
+
+!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.9.0", isOptimized: false, runtimeVersion: 0, emissionKind: 1, enums: !2, subprograms: !3)
+!1 = !DIFile(filename: "test.c", directory: "")
+!2 = !{}
+!3 = !{!4, !8}
+!4 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, scopeLine: 2, isOptimized: false, variables: !2)
+!5 = !DISubroutineType(types: !6)
+!6 = !{!7}
+!7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
+!8 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
+!9 = !{i32 2, !"Dwarf Version", i32 4}
+!10 = !{i32 2, !"Debug Info Version", i32 3}
+!11 = !{!"clang version 3.9.0"}
+!12 = !DILocation(line: 2, column: 20, scope: !4)
+!13 = !DILocation(line: 2, column: 13, scope: !4)
+!14 = !DILocation(line: 3, column: 20, scope: !8)
+!15 = !DILocation(line: 3, column: 13, scope: !8)
OpenPOWER on IntegriCloud