blob: 5672f9ab79bb744f774215161e6a3cbc25a71419 [file] [log] [blame] [edit]
; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff \
; RUN: -data-sections=false -function-sections=false -filetype=obj -o %t.o < %s
; RUN: llvm-objdump -D -r --symbol-description %t.o | FileCheck %s
; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff \
; RUN: -data-sections=false -function-sections=false -filetype=obj -o %t.o < %s
; RUN: llvm-objdump -D -r --symbol-description %t.o | FileCheck %s
; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff \
; RUN: -data-sections=true -function-sections=true -filetype=obj -o %t.o < %s
; RUN: llvm-objdump -D -r --symbol-description %t.o | FileCheck %s --check-prefix=SEC
@a = global i32 1
@b = dso_local constant i32 2
@p = dso_local global ptr @a, !implicit.ref !0
@c = global i32 3
define dso_local void @foo(i32 noundef signext %i) {
entry:
tail call void @extern_func1(i32 noundef signext %i)
ret void
}
declare void @extern_func1(i32 noundef signext)
define dso_local signext i32 @bar() {
entry:
%0 = load i32, ptr @a, align 4
%call = tail call signext i32 @extern_func2(i32 noundef signext %0)
ret i32 %call
}
declare signext i32 @extern_func2(i32 noundef signext)
define dso_local signext i32 @baz() !implicit.ref !0 {
entry:
%0 = load i32, ptr @c, align 4
ret i32 %0
}
!0 = !{ptr @b}
; CHECK: Disassembly of section .text:
; CHECK-EMPTY:
; CHECK-NEXT: 00000000 (idx: {{[0-9]+}}) .foo:
; CHECK: 00000000: R_REF (idx: {{[0-9]+}}) b
; CHECK: 0000000c: R_RBR (idx: {{[0-9]+}}) .extern_func1[PR]
; CHECK: 0000004a: R_TOC (idx: {{[0-9]+}}) a[TC]
; CHECK: 00000054: R_RBR (idx: {{[0-9]+}}) .extern_func2[PR]
; CHECK: 00000092: R_TOC (idx: {{[0-9]+}}) c[TC]
; CHECK: Disassembly of section .data:
; CHECK-EMPTY:
; CHECK-NEXT: [[DATA:[0-9a-f]+]] (idx: {{[0-9]+}}) a:
; CHECK: [[DATA]]: R_REF (idx: {{[0-9]+}}) b
; CHECK: [[DATA_P:[0-9a-f]+]] (idx: {{[0-9]+}}) p:
; CHECK: [[DATA_P]]: R_POS (idx: {{[0-9]+}}) a
; CHECK: {{[0-9a-f]+}} (idx: {{[0-9]+}}) c:
; SEC: Disassembly of section .text
; SEC-EMPTY:
; SEC-NEXT: .foo[PR]:
; SEC: R_RBR (idx: {{[0-9]+}}) .extern_func1[PR]
; SEC: .bar[PR]:
; SEC: R_TOC (idx: {{[0-9]+}}) a[TC]
; SEC: R_RBR (idx: {{[0-9]+}}) .extern_func2[PR]
; SEC: .baz[PR]:
; SEC: R_REF (idx: {{[0-9]+}}) b[RO]
; SEC: R_TOC (idx: {{[0-9]+}}) c[TC]
; SEC: Disassembly of section .data:
; SEC-EMPTY:
; SEC-NEXT: a[RW]:
; SEC: p[RW]:
; SEC: R_REF (idx: {{[0-9]+}}) b[RO]
; SEC: R_POS (idx: {{[0-9]+}}) a[RW]
; SEC: c[RW]: