[Attributes] Fix a bug in AttributeList::get so it can handle a mix of FunctionIndex...
authorCraig Topper <craig.topper@intel.com>
Mon, 16 Apr 2018 17:05:01 +0000 (17:05 +0000)
committerCraig Topper <craig.topper@intel.com>
Mon, 16 Apr 2018 17:05:01 +0000 (17:05 +0000)
commitf864250517695aa05f4446d840ab415b4e084464
tree1dfcb386547970327ff5d1c3ccb8e443e0a041f0
parent978aae4309e29474a25129ba7635ebf3b5fe67d5
[Attributes] Fix a bug in AttributeList::get so it can handle a mix of FunctionIndex and ReturnIndex/arg indices at the same time

The code uses the index of the last element in the sorted array to determine the maximum size needed for the vector. But if the last index is a FunctionIndex(~0), attrIdxToArrayIdx will return 0 and the vector will have size 1. If there are any indices before FunctionIndex, those values would return a value larger than 0 from attrIdxToArrayIdx. So in this case we need to look in front of the FunctionIndex to get the true size needed.

Differential Revision: https://reviews.llvm.org/D45632

llvm-svn: 330136
llvm/lib/IR/Attributes.cpp
llvm/unittests/IR/AttributesTest.cpp