; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \ ; RUN: -mattr=-altivec -function-sections < %s | \ ; RUN: FileCheck --check-prefix=ASM %s ; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \ ; RUN: -mattr=-altivec -function-sections < %s | \ ; RUN: FileCheck --check-prefix=ASM %s @alias_foo = alias void (...), bitcast (void ()* @foo to void (...)*) define void @foo() { entry: ret void } define hidden void @hidden_foo() { entry: ret void } define void @bar() { entry: call void @foo() call void @static_overalign_foo() call void bitcast (void (...)* @alias_foo to void ()*)() call void bitcast (void (...)* @extern_foo to void ()*)() call void @hidden_foo() ret void } declare void @extern_foo(...) define internal void @static_overalign_foo() align 64 { entry: ret void } ; ASM: .csect .foo[PR],5 ; ASM-NEXT: .globl foo[DS] # -- Begin function foo ; ASM-NEXT: .globl .foo[PR] ; ASM-NEXT: .align 4 ; ASM-NEXT: .csect foo[DS] ; ASM-NEXT: alias_foo: # @foo ; ASM-NEXT: .vbyte {{[0-9]+}}, .foo[PR] ; ASM-NEXT: .vbyte {{[0-9]+}}, TOC[TC0] ; ASM-NEXT: .vbyte {{[0-9]+}}, 0 ; ASM-NEXT: .csect .foo[PR],5 ; ASM-NEXT: .alias_foo: ; ASM-NEXT: # %bb.0: # %entry ; ASM-NEXT: blr ; ASM: .csect .hidden_foo[PR],5 ; ASM-NEXT: .globl hidden_foo[DS],hidden # -- Begin function hidden_foo ; ASM-NEXT: .globl .hidden_foo[PR],hidden ; ASM-NEXT: .align 4 ; ASM-NEXT: .csect hidden_foo[DS] ; ASM-NEXT: .vbyte {{[0-9]+}}, .hidden_foo[PR] # @hidden_foo ; ASM-NEXT: .vbyte {{[0-9]+}}, TOC[TC0] ; ASM-NEXT: .vbyte {{[0-9]+}}, 0 ; ASM-NEXT: .csect .hidden_foo[PR] ; ASM-NEXT: # %bb.0: # %entry ; ASM-NEXT: blr ; ASM: .csect .bar[PR],5 ; ASM-NEXT: .globl bar[DS] # -- Begin function bar ; ASM-NEXT: .globl .bar[PR] ; ASM-NEXT: .align 4 ; ASM-NEXT: .csect bar[DS] ; ASM-NEXT: .vbyte {{[0-9]+}}, .bar[PR] # @bar ; ASM-NEXT: .vbyte {{[0-9]+}}, TOC[TC0] ; ASM-NEXT: .vbyte {{[0-9]+}}, 0 ; ASM-NEXT: .csect .bar[PR],5 ; ASM-NEXT: # %bb.0: # %entry ; ASM: bl .foo[PR] ; ASM-NEXT: nop ; ASM-NEXT: bl .static_overalign_foo[PR] ; ASM-NEXT: nop ; ASM-NEXT: bl .alias_foo ; ASM-NEXT: nop ; ASM-NEXT: bl .extern_foo ; ASM-NEXT: nop ; ASM-NEXT: bl .hidden_foo[PR] ; ASM-NEXT: nop ; ASM: .csect .static_overalign_foo[PR],6 ; ASM-NEXT: .lglobl static_overalign_foo[DS] # -- Begin function static_overalign_foo ; ASM-NEXT: .lglobl .static_overalign_foo[PR] ; ASM-NEXT: .align 6 ; ASM-NEXT: .csect static_overalign_foo[DS] ; ASM-NEXT: .vbyte {{[0-9]+}}, .static_overalign_foo[PR] # @static_overalign_foo ; ASM-NEXT: .vbyte {{[0-9]+}}, TOC[TC0] ; ASM-NEXT: .vbyte {{[0-9]+}}, 0 ; ASM-NEXT: .csect .static_overalign_foo[PR],6 ; ASM-NEXT: # %bb.0: # %entry ; ASM-NEXT: blr ; ASM: .extern .extern_foo ; ASM-NEXT: .extern extern_foo[DS] ; ASM-NEXT: .globl alias_foo ; ASM-NEXT: .globl .alias_foo