mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
3e96531186
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
43 lines
1.1 KiB
LLVM
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
|
|
}
|