[LLVMbugs] [Bug 11908] New: DFAEmitter in TableGen doesn't handle sentinel transition row properly
    bugzilla-daemon at llvm.org 
    bugzilla-daemon at llvm.org
       
    Thu Feb  2 08:35:29 PST 2012
    
    
  
http://llvm.org/bugs/show_bug.cgi?id=11908
             Bug #: 11908
           Summary: DFAEmitter in TableGen doesn't handle sentinel
                    transition row properly
           Product: new-bugs
           Version: trunk
          Platform: Other
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: bcahoon at codeaurora.org
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified
When the DFAPacketizerEmitter code is generating the DFAStateEntryTable from a
target's .td file, the code is not handling the sentinel transition state
properly and generates incorrect index values for the states that occurs after
the sentinel state.  I think only the Hexagon target is affected by this bug.
For example, here's the incorrect entry table.
const unsigned int HexagonDFAStateEntryTable[] = {
0, 7, 13, 19, 25, 31, 38, 45, 52, 58, 62, 68, 75, 82, 86, 90, 97, 97, 103,
109,\
 112, 115, 119, 125, 131, 138, 144, 150, 153, 156, 162, 168, 174, 180, 187,
192\
, 197, 202, 207, 212, 217, 222,
};
There are two entries numbered '97'.  This represents the sentinel transition
state in the DFAStateInputTable.  The second entry needs to be '98' in this
case.
Here's the code in DFAPacketizerEmitter.cpp:
    // If there are no valid transitions from this stage, we need a sentinel
    // transition.
    if (ValidTransitions == StateEntry[i])
      OS << "{-1, -1},";
Although the sentinel state is not valid, we still need to increment
ValidTransitions since that is the index into the DFAStateInputTable.
I have a simple fix for the bug, which I'm going to sent to the commits mailing
list.
-- 
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