llvm-6502/test/CodeGen/ARM/data-in-code-annotations.ll
Jim Grosbach 3e96531186 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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157062 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-18 19:12:01 +00:00

43 lines
1.1 KiB
LLVM

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