diff options
author | Craig Topper <craig.topper@intel.com> | 2019-06-06 19:21:23 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2019-06-06 19:21:23 +0000 |
commit | ca541b20d0c885793c06bddf7966f3e93c03e32f (patch) | |
tree | 72dd22e8895f97d5b57ec4bb26938de8a2db51ef | |
parent | 9e97caf59474880349f8710463bffb97996a7336 (diff) | |
download | bcm5719-llvm-ca541b20d0c885793c06bddf7966f3e93c03e32f.tar.gz bcm5719-llvm-ca541b20d0c885793c06bddf7966f3e93c03e32f.zip |
[CFLGraph] Add support for unary fneg instruction.
Differential Revision: https://reviews.llvm.org/D62791
llvm-svn: 362737
-rw-r--r-- | llvm/lib/Analysis/CFLGraph.h | 10 | ||||
-rw-r--r-- | llvm/test/Analysis/CFLAliasAnalysis/Steensgaard/must-and-partial.ll | 3 |
2 files changed, 12 insertions, 1 deletions
diff --git a/llvm/lib/Analysis/CFLGraph.h b/llvm/lib/Analysis/CFLGraph.h index cd7c2df8041..21842ed3648 100644 --- a/llvm/lib/Analysis/CFLGraph.h +++ b/llvm/lib/Analysis/CFLGraph.h @@ -291,6 +291,11 @@ template <typename CFLAA> class CFLGraphBuilder { addAssignEdge(Op2, &Inst); } + void visitUnaryOperator(UnaryOperator &Inst) { + auto *Src = Inst.getOperand(0); + addAssignEdge(Src, &Inst); + } + void visitAtomicCmpXchgInst(AtomicCmpXchgInst &Inst) { auto *Ptr = Inst.getPointerOperand(); auto *Val = Inst.getNewValOperand(); @@ -579,6 +584,11 @@ template <typename CFLAA> class CFLGraphBuilder { break; } + case Instruction::FNeg: { + addAssignEdge(CE->getOperand(0), CE); + break; + } + default: llvm_unreachable("Unknown instruction type encountered!"); } diff --git a/llvm/test/Analysis/CFLAliasAnalysis/Steensgaard/must-and-partial.ll b/llvm/test/Analysis/CFLAliasAnalysis/Steensgaard/must-and-partial.ll index cc03870b794..b1f96220662 100644 --- a/llvm/test/Analysis/CFLAliasAnalysis/Steensgaard/must-and-partial.ll +++ b/llvm/test/Analysis/CFLAliasAnalysis/Steensgaard/must-and-partial.ll @@ -49,6 +49,7 @@ define void @testr2(double* nocapture readonly %A, double* nocapture readonly %I %1 = load double, double* %arrayidx22 %arrayidx25 = getelementptr inbounds double, double* %A, i64 2 %2 = load double, double* %arrayidx25 - %mul26 = fmul double %1, %2 + %3 = fneg double %1 + %mul26 = fmul double %3, %2 ret void } |