[LLVMbugs] [Bug 3845] New: Stale MachineInstruction pointer reference in replaceFrameIndices can cause certain frameindices to not be replaced
bugzilla-daemon at cs.uiuc.edu
bugzilla-daemon at cs.uiuc.edu
Thu Mar 19 11:45:37 PDT 2009
http://llvm.org/bugs/show_bug.cgi?id=3845
Summary: Stale MachineInstruction pointer reference in
replaceFrameIndices can cause certain frameindices to
not be replaced
Product: libraries
Version: 2.5
Platform: PC
OS/Version: All
Status: NEW
Severity: major
Priority: P2
Component: Common Code Generator Code
AssignedTo: unassignedbugs at nondot.org
ReportedBy: just.s0m3.guy+llvmbugzilla at gmail.com
CC: llvmbugs at cs.uiuc.edu
During traversal of the instruction iterator in order to locate and replace
CallFramePseudo Instructions and instructions bearing FrameIndices, the
replaceFrameIndices function stores a pointer to the current MachineInstr.
(line 516 in
http://llvm.org/viewvc/llvm-project/llvm/tags/RELEASE_25/lib/CodeGen/PrologEpilogInserter.cpp?annotate=65926)
It then possibly performs the CallFramePseudoInstr elimination, possibly
removing the instruction pointed to from the basic block. (Lines 524 to 542).
It then loops over all operands of the MachineInstr pointed to by the stored
pointer, in order to find and replace frame indices. (lines 546 to 569). This
is a stale pointer. This stored pointer is no longer valid. A new pointer
should be retrieved from the current iterator location.
When the stale pointer is used, a sequence in which a frameindex appears in the
instruction immediately following a CallFramePseudoInstr can result in the
frameindex not being replaced, causing it to continue to exist all the way
through to the AsmPrinter pass.
To fix this issue, simply mov the assignment at line 516 to line 546.
(Note also that the Register Scavenger is updated using this stale pointer as
well - line 576).
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list