From 61b5e727b7ccfca7e0cbb0ed70f9e828cd1514bd Mon Sep 17 00:00:00 2001 From: diggerlin Date: Mon, 6 Jan 2020 11:38:22 -0500 Subject: [AIX] Use csect reference for function address constants SUMMARY: We currently emit a reference for function address constants as labels; for example: foo_ptr: .long foo however, there may be no such label in the case where the function is undefined. Although the label exists when the function is defined, we will (to be consistent) also use a csect reference in that case. Reviewers: daltenty,hubert.reinterpretcast,jasonliu,Xiangling_L Subscribers: cebowleratibm, wuzish, nemanjai Differential Revision: https://reviews.llvm.org/D71144 --- .../PowerPC/aix-reference-func-addr-const.ll | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 llvm/test/CodeGen/PowerPC/aix-reference-func-addr-const.ll (limited to 'llvm/test/CodeGen') diff --git a/llvm/test/CodeGen/PowerPC/aix-reference-func-addr-const.ll b/llvm/test/CodeGen/PowerPC/aix-reference-func-addr-const.ll new file mode 100644 index 00000000000..88d5f3d1427 --- /dev/null +++ b/llvm/test/CodeGen/PowerPC/aix-reference-func-addr-const.ll @@ -0,0 +1,32 @@ +; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff < %s | FileCheck %s +; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff < %s | FileCheck --check-prefix=CHECK64 %s + +@foo_ptr = global void (...)* @foo +declare void @foo(...) + +@bar_ptr1 = global void (...)* bitcast (void ()* @bar to void (...)*) +define void @bar() { +entry: + ret void +} + + +;CHECK: .csect .data[RW] +;CHECK-NEXT: .globl foo_ptr +;CHECK-NEXT: .align 2 +;CHECK-NEXT: foo_ptr: +;CHECK-NEXT: .long foo[DS] +;CHECK-NEXT: .globl bar_ptr1 +;CHECK-NEXT: .align 2 +;CHECK-NEXT: bar_ptr1: +;CHECK-NEXT: .long bar[DS] + +;CHECK64: .csect .data[RW] +;CHECK64-NEXT: .globl foo_ptr +;CHECK64-NEXT: .align 3 +;CHECK64-NEXT: foo_ptr: +;CHECK64-NEXT: .llong foo[DS] +;CHECK64-NEXT: .globl bar_ptr1 +;CHECK64-NEXT: .align 3 +;CHECK64-NEXT: bar_ptr1: +;CHECK64-NEXT: .llong bar[DS] -- cgit v1.2.3