[llvm] r203045 - Fixup PPC Darwin i1 argument handling
Hal Finkel
hfinkel at anl.gov
Wed Mar 5 16:45:19 PST 2014
Author: hfinkel
Date: Wed Mar 5 18:45:19 2014
New Revision: 203045
URL: http://llvm.org/viewvc/llvm-project?rev=203045&view=rev
Log:
Fixup PPC Darwin i1 argument handling
Like on other targets, we need to zero_extend/truncate i1 args before copying
them to GPRs.
Modified:
llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp
llvm/trunk/test/CodeGen/PowerPC/ppc32-i1-vaarg.ll
Modified: llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp?rev=203045&r1=203044&r2=203045&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp Wed Mar 5 18:45:19 2014
@@ -2777,6 +2777,10 @@ PPCTargetLowering::LowerFormalArguments_
if (GPR_idx != Num_GPR_Regs) {
unsigned VReg = MF.addLiveIn(GPR[GPR_idx], &PPC::GPRCRegClass);
ArgVal = DAG.getCopyFromReg(Chain, dl, VReg, MVT::i32);
+
+ if (ObjectVT == MVT::i1)
+ ArgVal = DAG.getNode(ISD::TRUNCATE, dl, MVT::i1, ArgVal);
+
++GPR_idx;
} else {
needsLoad = true;
@@ -4414,6 +4418,9 @@ PPCTargetLowering::LowerCall_Darwin(SDVa
case MVT::i32:
case MVT::i64:
if (GPR_idx != NumGPRs) {
+ if (Arg.getValueType() == MVT::i1)
+ Arg = DAG.getNode(ISD::ZERO_EXTEND, dl, PtrVT, Arg);
+
RegsToPass.push_back(std::make_pair(GPR[GPR_idx++], Arg));
} else {
LowerMemOpCallTo(DAG, MF, Chain, Arg, PtrOff, SPDiff, ArgOffset,
Modified: llvm/trunk/test/CodeGen/PowerPC/ppc32-i1-vaarg.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/PowerPC/ppc32-i1-vaarg.ll?rev=203045&r1=203044&r2=203045&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/PowerPC/ppc32-i1-vaarg.ll (original)
+++ llvm/trunk/test/CodeGen/PowerPC/ppc32-i1-vaarg.ll Wed Mar 5 18:45:19 2014
@@ -1,4 +1,5 @@
; RUN: llc < %s -march=ppc32 -mcpu=ppc32 | FileCheck %s
+; RUN: llc < %s -march=ppc32 -mcpu=ppc32 -mtriple=powerpc-darwin | FileCheck %s -check-prefix=CHECK-D
target triple = "powerpc-unknown-linux-gnu"
declare void @printf(i8*, ...)
@@ -13,3 +14,7 @@ define void @main() {
; CHECK-DAG: crxor 6, 6, 6
; CHECK: bl printf
+; CHECK-D-LABEL: @main
+; CHECK-D: li r4, 0
+; CHECK-D: bl L_printf$stub
+
More information about the llvm-commits
mailing list