From dae9c830298e187bf984ce338d9961ac5c55e6e0 Mon Sep 17 00:00:00 2001 From: Alexey Samsonov Date: Wed, 2 Dec 2015 21:25:28 +0000 Subject: [PATCH] [PowerPC] Remove wild call to RegScavenger::initRegState(). This call should in fact be made by RegScavenger::enterBasicBlock() called below. The first call does nothing except for triggering UB, indicated by UBSan (passing nullptr to memset()). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254548 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/CodeGen/RegisterScavenging.h | 7 +++---- lib/Target/PowerPC/PPCFrameLowering.cpp | 3 +-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/include/llvm/CodeGen/RegisterScavenging.h b/include/llvm/CodeGen/RegisterScavenging.h index 6517a58f5c0..122c7853425 100644 --- a/include/llvm/CodeGen/RegisterScavenging.h +++ b/include/llvm/CodeGen/RegisterScavenging.h @@ -74,10 +74,6 @@ public: /// Start tracking liveness from the begin of the specific basic block. void enterBasicBlock(MachineBasicBlock *mbb); - /// Allow resetting register state info for multiple - /// passes over/within the same function. - void initRegState(); - /// Move the internal MBB iterator and update register states. void forward(); @@ -180,6 +176,9 @@ private: unsigned InstrLimit, MachineBasicBlock::iterator &UseMI); + /// Allow resetting register state info for multiple + /// passes over/within the same function. + void initRegState(); }; } // End llvm namespace diff --git a/lib/Target/PowerPC/PPCFrameLowering.cpp b/lib/Target/PowerPC/PPCFrameLowering.cpp index 5a151eb6ab2..174deb88bc5 100644 --- a/lib/Target/PowerPC/PPCFrameLowering.cpp +++ b/lib/Target/PowerPC/PPCFrameLowering.cpp @@ -569,8 +569,7 @@ bool PPCFrameLowering::findScratchRegister(MachineBasicBlock *MBB, if ((UseAtEnd && MBB->isReturnBlock()) || (!UseAtEnd && (&MBB->getParent()->front() == MBB))) return true; - - RS.initRegState(); + RS.enterBasicBlock(MBB); if (UseAtEnd && !MBB->empty()) { -- 2.34.1