From 39f1a97417eb70d5df19e5a11e445806df976437 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Mon, 6 May 2019 23:09:09 +0000 Subject: [PATCH] [FastISel] Pass the fneg input operand to hasTrivialKill in FastISel::selectFNeg. We're trying to calculate the kill flag for OpReg which is the input so we need to pass the input here. llvm-svn: 360097 --- llvm/lib/CodeGen/SelectionDAG/FastISel.cpp | 2 +- llvm/test/CodeGen/X86/fast-isel-fneg-kill.ll | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp index fb607bb..a6212aa 100644 --- a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp @@ -1719,7 +1719,7 @@ bool FastISel::selectFNeg(const User *I) { unsigned OpReg = getRegForValue(X); if (!OpReg) return false; - bool OpRegIsKill = hasTrivialKill(I); + bool OpRegIsKill = hasTrivialKill(X); // If the target has ISD::FNEG, use it. EVT VT = TLI.getValueType(DL, I->getType()); diff --git a/llvm/test/CodeGen/X86/fast-isel-fneg-kill.ll b/llvm/test/CodeGen/X86/fast-isel-fneg-kill.ll index d383601..d1d3ce7 100644 --- a/llvm/test/CodeGen/X86/fast-isel-fneg-kill.ll +++ b/llvm/test/CodeGen/X86/fast-isel-fneg-kill.ll @@ -9,7 +9,7 @@ define void @goo(double* %x, double* %y) nounwind { ; CHECK-NEXT: %[[REG1:.*]]:gr64 = COPY killed %[[REG0]] ; CHECK-NEXT: %[[REG3:.*]]:gr64 = COPY killed %[[REG2]] ; CHECK-NEXT: %[[REG10:.*]]:fr64 = MOVSDrm %[[REG1]], 1, $noreg, 0, $noreg :: (load 8 from %ir.x) -; CHECK-NEXT: %[[REG6:.*]]:gr64 = MOVSDto64rr %[[REG10]] +; CHECK-NEXT: %[[REG6:.*]]:gr64 = MOVSDto64rr killed %[[REG10]] ; CHECK-NEXT: %[[REG7:.*]]:gr64 = MOV64ri -9223372036854775808 ; CHECK-NEXT: %[[REG8:.*]]:gr64 = XOR64rr killed %[[REG6]], %[[REG7]], implicit-def $eflags ; CHECK-NEXT: %[[REG9:.*]]:fr64 = MOV64toSDrr killed %[[REG8]] -- 2.7.4