From: Yury Delendik Date: Wed, 26 Sep 2018 23:49:21 +0000 (+0000) Subject: [WebAssembly] Fix MRI.hasOneNonDBGUse assert in WebAssemblyRegStackify pass X-Git-Tag: llvmorg-8.0.0-rc1~7831 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b3857e4d35fe4435da943fc0e7056855babcf5d6;p=platform%2Fupstream%2Fllvm.git [WebAssembly] Fix MRI.hasOneNonDBGUse assert in WebAssemblyRegStackify pass Summary: The OneUseDominatesOtherUses in the WebAssemblyRegStackify not properly validates register use using hasOneUse. Since we added/modified DBG_VALUE the assert started catching valid cases. See also https://reviews.llvm.org/D49034#1247200 Fix verified by running the wasm waterfall. Reviewed By: dschuff Tags: #debug-info Differential Revision: https://reviews.llvm.org/D49034 llvm-svn: 343154 --- diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp index 5b6a91d..4649230 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp @@ -428,8 +428,8 @@ static bool OneUseDominatesOtherUses(unsigned Reg, const MachineOperand &OneUse, if (!TargetRegisterInfo::isVirtualRegister(DefReg) || !MFI.isVRegStackified(DefReg)) return false; - assert(MRI.hasOneUse(DefReg)); - const MachineOperand &NewUse = *MRI.use_begin(DefReg); + assert(MRI.hasOneNonDBGUse(DefReg)); + const MachineOperand &NewUse = *MRI.use_nodbg_begin(DefReg); const MachineInstr *NewUseInst = NewUse.getParent(); if (NewUseInst == OneUseInst) { if (&OneUse > &NewUse)