summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2012-05-18 19:12:01 +0000
committerJim Grosbach <grosbach@apple.com>2012-05-18 19:12:01 +0000
commit4b63d2ae1dd1cedbb0b2a61fa0da9559043dfabb (patch)
treeec99ff4582dce46aa5e78d56a65913820452bcc0 /llvm/test/CodeGen
parent846e6a6121ee1dcf6e672a0d0dcc184daea3e7e3 (diff)
downloadbcm5719-llvm-4b63d2ae1dd1cedbb0b2a61fa0da9559043dfabb.tar.gz
bcm5719-llvm-4b63d2ae1dd1cedbb0b2a61fa0da9559043dfabb.zip
Refactor data-in-code annotations.
Use a dedicated MachO load command to annotate data-in-code regions. This is the same format the linker produces for final executable images, allowing consistency of representation and use of introspection tools for both object and executable files. Data-in-code regions are annotated via ".data_region"/".end_data_region" directive pairs, with an optional region type. data_region_directive := ".data_region" { region_type } region_type := "jt8" | "jt16" | "jt32" | "jta32" end_data_region_directive := ".end_data_region" The previous handling of ARM-style "$d.*" labels was broken and has been removed. Specifically, it didn't handle ARM vs. Thumb mode when marking the end of the section. rdar://11459456 llvm-svn: 157062
Diffstat (limited to 'llvm/test/CodeGen')
-rw-r--r--llvm/test/CodeGen/ARM/data-in-code-annotations.ll42
-rw-r--r--llvm/test/CodeGen/Thumb2/thumb2-tbb.ll4
2 files changed, 45 insertions, 1 deletions
diff --git a/llvm/test/CodeGen/ARM/data-in-code-annotations.ll b/llvm/test/CodeGen/ARM/data-in-code-annotations.ll
new file mode 100644
index 00000000000..a66a9d1292f
--- /dev/null
+++ b/llvm/test/CodeGen/ARM/data-in-code-annotations.ll
@@ -0,0 +1,42 @@
+; RUN: llc < %s -mtriple=armv7-apple-darwin | FileCheck %s
+
+define double @f1() nounwind {
+; CHECK: f1:
+; CHECK: .data_region
+; CHECK: .long 1413754129
+; CHECK: .long 1074340347
+; CHECK: .end_data_region
+ ret double 0x400921FB54442D11
+}
+
+
+define i32 @f2() {
+; CHECK: f2:
+; CHECK: .data_region jt32
+; CHECK: .end_data_region
+
+entry:
+ switch i32 undef, label %return [
+ i32 1, label %sw.bb
+ i32 2, label %sw.bb6
+ i32 3, label %sw.bb13
+ i32 4, label %sw.bb20
+ ]
+
+sw.bb: ; preds = %entry
+ br label %return
+
+sw.bb6: ; preds = %entry
+ br label %return
+
+sw.bb13: ; preds = %entry
+ br label %return
+
+sw.bb20: ; preds = %entry
+ %div = sdiv i32 undef, undef
+ br label %return
+
+return: ; preds = %sw.bb20, %sw.bb13, %sw.bb6, %sw.bb, %entry
+ %retval.0 = phi i32 [ %div, %sw.bb20 ], [ undef, %sw.bb13 ], [ undef, %sw.bb6 ], [ undef, %sw.bb ], [ 0, %entry ]
+ ret i32 %retval.0
+}
diff --git a/llvm/test/CodeGen/Thumb2/thumb2-tbb.ll b/llvm/test/CodeGen/Thumb2/thumb2-tbb.ll
index 5dc3cc3ce70..a9d71d6bda1 100644
--- a/llvm/test/CodeGen/Thumb2/thumb2-tbb.ll
+++ b/llvm/test/CodeGen/Thumb2/thumb2-tbb.ll
@@ -5,7 +5,9 @@ define void @bar(i32 %n.u) {
entry:
; CHECK: bar:
; CHECK: tbb
-; CHECK: .align 1
+; CHECK: .data_region jt8
+; CHECK: .end_data_region
+; CHECK-NEXT: .align 1
switch i32 %n.u, label %bb12 [i32 1, label %bb i32 2, label %bb6 i32 4, label %bb7 i32 5, label %bb8 i32 6, label %bb10 i32 7, label %bb1 i32 8, label %bb3 i32 9, label %bb4 i32 10, label %bb9 i32 11, label %bb2 i32 12, label %bb5 i32 13, label %bb11 ]
bb:
OpenPOWER on IntegriCloud