mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-18 18:42:46 +02:00
[PowerPC][AIX]Add lowering of MCSymbol MachineOperand.
Adds machine operand lowering for MCSymbolSDNodes to the PowerPC backend. This is needed to produce call instructions in assembly for AIX because the callee operand is a MCSymbolSDNode. The test is XFAIL'ed for asserts due to a (valid) assertion in PEI that the AIX ABI isn't supported yet. Differential Revision: https://reviews.llvm.org/D63738 llvm-svn: 367133
This commit is contained in:
parent
e7d5551501
commit
2fb8946c5f
@ -1843,6 +1843,9 @@ MCSection *TargetLoweringObjectFileXCOFF::SelectSectionForGlobal(
|
||||
Kind, /* BeginSymbolName */ nullptr);
|
||||
}
|
||||
|
||||
if (Kind.isText())
|
||||
return TextSection;
|
||||
|
||||
report_fatal_error("XCOFF other section types not yet implemented.");
|
||||
}
|
||||
|
||||
|
@ -193,6 +193,9 @@ bool llvm::LowerPPCMachineOperandToMCOperand(const MachineOperand &MO,
|
||||
OutMO = GetSymbolRef(MO, AP.GetBlockAddressSymbol(MO.getBlockAddress()), AP,
|
||||
isDarwin);
|
||||
return true;
|
||||
case MachineOperand::MO_MCSymbol:
|
||||
OutMO = GetSymbolRef(MO, MO.getMCSymbol(), AP, isDarwin);
|
||||
return true;
|
||||
case MachineOperand::MO_RegisterMask:
|
||||
return false;
|
||||
}
|
||||
|
@ -1,9 +1,14 @@
|
||||
; XFAIL: asserts
|
||||
|
||||
; RUN: llc -mtriple powerpc-ibm-aix-xcoff -stop-after=machine-cp < %s | \
|
||||
; RUN: FileCheck --check-prefix=32BIT %s
|
||||
|
||||
; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -stop-after=machine-cp < %s | \
|
||||
; RUN: FileCheck --check-prefix=64BIT %s
|
||||
|
||||
; RUN: llc -mtriple powerpc-ibm-aix-xcoff < %s | FileCheck %s
|
||||
; RUN: llc -mtriple powerpc64-ibm-aix-xcoff < %s | FileCheck %s
|
||||
|
||||
declare void @foo(...)
|
||||
|
||||
define void @test_call() {
|
||||
@ -16,6 +21,10 @@ entry:
|
||||
; 64BIT: BL8_NOP <mcsymbol .foo>, csr_aix64, implicit-def dead $lr8, implicit $rm, implicit $x2, implicit-def $r1
|
||||
; 64BIT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1
|
||||
|
||||
; CHECK-LABEL: test_call
|
||||
; CHECK: bl .foo
|
||||
; CHECK-NEXT: nop
|
||||
|
||||
call void bitcast (void (...)* @foo to void ()*)()
|
||||
ret void
|
||||
}
|
||||
@ -35,6 +44,10 @@ entry:
|
||||
; 64BIT: BL8 <mcsymbol .foo_local>, csr_aix64, implicit-def dead $lr8, implicit $rm, implicit $x2, implicit-def $r1
|
||||
; 64BIT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1
|
||||
|
||||
; CHECK-LABEL: test_local_call
|
||||
; CHECK: bl .foo_local
|
||||
; CHECK-NOT: nop
|
||||
|
||||
call void @foo_local()
|
||||
ret void
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user