http://llvm.org/bugs/show_bug.cgi?id=12542

             Bug #: 12542
           Summary: IntrinsicEmitter generate wrong target intrinsics
                    attribute getting code.
           Product: new-bugs
           Version: trunk
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: new bugs
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]
    Classification: Unclassified


Created attachment 8381
  --> http://llvm.org/bugs/attachment.cgi?id=8381
The patch that fix the bug

The IntrinisicEmitter use an index array to map intrinsic id to identical
attributes by assuming the value of the intrinsic id is start from zero. But
this is incorrect when generating target specific intrinsic, because they are
start from Intrinsic::num_intrinsics, i.e. the value of first target spesific
intrinsic is equal to Intrinsic::num_intrinsics instead of 0. As a result, the
code generated by IntrinisicEmitter is incorrect, e.g.:

static AttrListPtr getAttributes(mblazeIntrinsic::ID id) {
  static const uint8_t IntrinsicsToAttributesMap[] = {
    255, // Invalid intrinsic
    1, // llvm.mblaze.fsl.aget
    1, // llvm.mblaze.fsl.aput
    1, // llvm.mblaze.fsl.caget
    ...
  }

  AttributeWithIndex AWI[1];
  unsigned NumAttrs = 0;

  //  Wrong, should be IntrinsicsToAttributesMap[id -Intrinsic::num_intrinsics
+ 1]!
  switch(IntrinsicsToAttributesMap[id]) {
    ...

In fact, i find this bug in my private backend, so i cannot attach a regression
at the moment.

-- 
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.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to