From ff9639d6b700d8ff05994329b65e55a7842f44ba Mon Sep 17 00:00:00 2001 From: Hal Finkel Date: Fri, 21 Aug 2015 21:34:24 +0000 Subject: [PowerPC] PPCVSXFMAMutate should not segfault on undef input registers When PPCVSXFMAMutate would look at the input addend register, it would get its input value number. This would fail, however, if the register was undef, causing a segfault. Don't segfault (just skip such FMA instructions). Fixes the test case from PR24542 (although that may have been over-reduced). llvm-svn: 245741 --- llvm/lib/Target/PowerPC/PPCVSXFMAMutate.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'llvm/lib/Target/PowerPC/PPCVSXFMAMutate.cpp') diff --git a/llvm/lib/Target/PowerPC/PPCVSXFMAMutate.cpp b/llvm/lib/Target/PowerPC/PPCVSXFMAMutate.cpp index 974857556dc..f392b2572bc 100644 --- a/llvm/lib/Target/PowerPC/PPCVSXFMAMutate.cpp +++ b/llvm/lib/Target/PowerPC/PPCVSXFMAMutate.cpp @@ -103,6 +103,11 @@ protected: VNInfo *AddendValNo = LIS->getInterval(MI->getOperand(1).getReg()).Query(FMAIdx).valueIn(); + if (!AddendValNo) { + // This can be null if the register is undef. + continue; + } + MachineInstr *AddendMI = LIS->getInstructionFromIndex(AddendValNo->def); // The addend and this instruction must be in the same block. -- cgit v1.2.3