[LLVMbugs] [Bug 5049] New: incorrect asserting conditions in TargetLowering.h
bugzilla-daemon at cs.uiuc.edu
bugzilla-daemon at cs.uiuc.edu
Fri Sep 25 10:08:11 PDT 2009
http://llvm.org/bugs/show_bug.cgi?id=5049
Summary: incorrect asserting conditions in TargetLowering.h
Product: libraries
Version: trunk
Platform: PC
OS/Version: Windows NT
Status: NEW
Severity: normal
Priority: P2
Component: Target Description Classes
AssignedTo: unassignedbugs at nondot.org
ReportedBy: micah.villmow at amd.com
CC: llvmbugs at cs.uiuc.edu
setLoadExtAction(ISD::SEXTLOAD, MVT::v2f64, Expand)
or
setLoadExtAction(ISD::SEXTLOAD, MVT::v4f64, Expand) causes this assert to
trigger:
assert((unsigned)VT.SimpleTy < sizeof(LoadExtActions[0])*4 &&
ExtType < array_lengthof(LoadExtActions) &&
"Table isn't big enough!");
@ line 982 because the type used to be uint32_t.
The problem comes that sizeof(LoadExtActions[0]) == 8 and 8 * 4 = 32, but both
v2f64 and v4f64 have ID's 32 and 33 respectively, causing this assert to
trigger.
The correct method of doing this assert should be
assert((unsigned)VT.SimpleTy < LAST_VALUETYPE &&
ExtType < array_lengthof(LoadExtActions) &&
"Table isn't big enough!");
Other asserts that also will be triggered because of this are in
setTruncStoreAction, setConvertAction, setCondCodeAction, when the MemVT ==
(v2f64 || v4f64).
The functions setIndexedLoadAction and setIndexedStoreAction actually get this
correct, so someone has hit this assert before but neglected to updated all
asserts in the file.
--
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