[IRGen] Add parameter flags to function type metadata

Currently only single 'inout' flag has been encoded into function
metadata, these changes extend function metadata to support up to
32 flags per parameter.
This commit is contained in:
Pavel Yaskevich
2017-10-18 15:17:54 -07:00
parent b4899f1d53
commit b33a6c7cdf
9 changed files with 326 additions and 152 deletions

View File

@@ -1923,7 +1923,8 @@ static bool _dynamicCastToFunction(OpaqueValue *dest,
if (srcFn->getNumArguments() != targetFn->getNumArguments())
return _fail(src, srcType, targetType, flags);
for (unsigned i = 0, e = srcFn->getNumArguments(); i < e; ++i)
if (srcFn->getArguments()[i] != targetFn->getArguments()[i])
if (srcFn->getArguments()[i] != targetFn->getArguments()[i] ||
srcFn->getParameterFlags(i) != targetFn->getParameterFlags(i))
return _fail(src, srcType, targetType, flags);
return _succeed(dest, src, srcType, flags);