[LLVMbugs] [Bug 1788] New: assertion failure in lib/transforms/IPO/ DeadArgumentElimination
bugzilla-daemon at cs.uiuc.edu
bugzilla-daemon at cs.uiuc.edu
Fri Nov 9 14:42:30 PST 2007
http://llvm.org/bugs/show_bug.cgi?id=1788
Summary: assertion failure in
lib/transforms/IPO/DeadArgumentElimination
Product: new-bugs
Version: unspecified
Platform: PC
OS/Version: Windows XP
Status: NEW
Severity: normal
Priority: P2
Component: new bugs
AssignedTo: unassignedbugs at nondot.org
ReportedBy: richard.smith at antixlabs.com
CC: llvmbugs at cs.uiuc.edu
llvm-ld gives an assertion failure "CS.instruction() && Unknown instruction for
the I2I list" in lib/transforms/IPO/DeadArgumentElimination. The app which
provoked it is large and under NDA so cannot be attached, but the reason is
thus:
runOnModule in lib/transforms/IPO/DeadArgumentElimination.cpp iterates through
every function and -
(a) checks whether it has varargs but no va_start. If that is so the varargs
are removed and every call to the function is replaced with one which omits the
params;
(b) calls SurveyFunction, and if the funtion has "maybe alive" args, all calls
within the function are pushed to the vector InstructionsToInspect.
In this case, a function processed provokes (b) and pushes the addresses of a
number of call intructions to InstructionsToInspect, one of which is to a
function with unused varargs. Later in the iteration loop that function is
processed provoking (a) - it is modified and all calls to it are replaced. At
this point, InstructionsToInspect still contains a pointer to the original
call, which is now invalid.
When InstructionsToInspect is processed it reaches the invalid pointer and the
random data there happens to provoke the asserion failure reported.
--
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