OSDN Git Service

[SelectionDAG] Fix off by one in a compare in getOperationAction.
authorCraig Topper <craig.topper@gmail.com>
Thu, 25 May 2017 05:38:40 +0000 (05:38 +0000)
committerCraig Topper <craig.topper@gmail.com>
Thu, 25 May 2017 05:38:40 +0000 (05:38 +0000)
If Op is equal to array_lengthof, the lookup would be out of bounds, but we were only checking for greater than. I suspect nothing ever passes in the equal value because its a sentinel to mark the end of the builtin opcodes and not a real opcode.

So really this fix is just so that the code looks right and makes sense.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303840 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/TargetLowering.h

index bf453c2..17182b9 100644 (file)
@@ -738,7 +738,7 @@ public:
     if (VT.isExtended()) return Expand;
     // If a target-specific SDNode requires legalization, require the target
     // to provide custom legalization for it.
-    if (Op > array_lengthof(OpActions[0])) return Custom;
+    if (Op >= array_lengthof(OpActions[0])) return Custom;
     return OpActions[(unsigned)VT.getSimpleVT().SimpleTy][Op];
   }