[LLVMbugs] [Bug 14519] New: Tablegen-generated Intrinsic string compares mis-sorted

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Dec 5 10:26:33 PST 2012


             Bug #: 14519
           Summary: Tablegen-generated Intrinsic string compares
           Product: new-bugs
           Version: 3.1
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: richard.relph at amd.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

In the tablegen-generated file AMDILGenIntrinsics.inc, we have a bunch of if
statements comparing strings, many of which are dead, preventing correct
recognition of some intrinsics in the their text form. I'm not quite sure what
GET_FUNCTION_RECOGNIZER is used for, but if it's used, it's broken… ;-)

Here's a small segment:

// Function name -> enum value recognizer code.
StringRef NameR(Name+6, Len-6);   // Skip over 'llvm.'
switch (Name[5]) {                  // Dispatch on first letter.
default: break;
case 'A':
if (NameR.startswith("MDIL.barrier.")) return AMDILIntrinsic::AMDIL_barrier;
if (NameR.startswith("MDIL.barrier.global.")) return
if (NameR.startswith("MDIL.barrier.local.")) return
if (NameR.startswith("MDIL.barrier.region.")) return
if (NameR.startswith("MDIL.fma.")) return AMDILIntrinsic::AMDIL_fma;
if (NameR.startswith("MDIL.fma.rte.")) return AMDILIntrinsic::AMDIL_fma_rte;
if (NameR.startswith("MDIL.fma.rtn.")) return AMDILIntrinsic::AMDIL_fma_rtn;
if (NameR.startswith("MDIL.fma.rtp.")) return AMDILIntrinsic::AMDIL_fma_rtp;
if (NameR.startswith("MDIL.fma.rtz.")) return AMDILIntrinsic::AMDIL_fma_rtz;
and several other similar instances.

The problem is that AMDIL.barrier.global will match the earlier startswith()
AMDIL.barrier test and return the wrong intrinsic enum. Similarly

The string compares are obviously sorted by tablegen, but should be emitted in
reverse sort order.

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