From: Kang Zhang Date: Tue, 25 Dec 2018 03:29:51 +0000 (+0000) Subject: [PowerPC] Fix the bug of ISD::ADDE to set its second return type to glue X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d2ca398f0800f1310835dc90d5a3b2a81bf27fce;p=llvm [PowerPC] Fix the bug of ISD::ADDE to set its second return type to glue Summary: This patch is to fix the bug imported by rL341634. In above submit , the the return type of ISD::ADDE is 14224: SDVTList VTs = DAG.getVTList(MVT::i64, MVT::i64), but in fact, the second return type of ISD::ADDE should be MVT::Glue not MVT::i64. Reviewed By: hfinkel Differential Revision: https://reviews.llvm.org/D55977 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@350061 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/PowerPC/PPCISelLowering.cpp b/lib/Target/PowerPC/PPCISelLowering.cpp index a1c2e2f74ee..fed73639ce6 100644 --- a/lib/Target/PowerPC/PPCISelLowering.cpp +++ b/lib/Target/PowerPC/PPCISelLowering.cpp @@ -14389,7 +14389,7 @@ static SDValue combineADDToADDZE(SDNode *N, SelectionDAG &DAG, return SDValue(); SDLoc DL(N); - SDVTList VTs = DAG.getVTList(MVT::i64, MVT::i64); + SDVTList VTs = DAG.getVTList(MVT::i64, MVT::Glue); SDValue Cmp = RHS.getOperand(0); SDValue Z = Cmp.getOperand(0); auto *Constant = dyn_cast(Cmp.getOperand(1)); diff --git a/test/CodeGen/PowerPC/adde_return_type.ll b/test/CodeGen/PowerPC/adde_return_type.ll new file mode 100644 index 00000000000..7ce11079a62 --- /dev/null +++ b/test/CodeGen/PowerPC/adde_return_type.ll @@ -0,0 +1,11 @@ +; REQUIRES: asserts +; RUN: llc -mtriple=powerpc64le-unknown-unknown -debug-only=legalize-types \ +; RUN: < %s -o /dev/null 2>&1 | FileCheck %s + +define i64 @testAddeReturnType(i64 %X, i64 %Z) { +; CHECK: Legally typed node: {{.*}}: i64,glue = adde {{.*}} + %cmp = icmp ne i64 %Z, 0 + %conv1 = zext i1 %cmp to i64 + %add = add nsw i64 %conv1, %X + ret i64 %add +}