Hi,

> On Nov 15, 2016, at 5:17 PM, Ben Ng via swift-dev <swift-dev@swift.org> wrote:
> 
> Good evening, folks.
> 
> I’ve been working on a high-level SIL optimization pass that replaces an 
> application of the `+=` function with an application of `Array.concat(A: 
> Element)`. I’m blocked because I can’t figure out how to get a FuncRef to 
> `Array.append` from the SILTransform.

You could use SILModule::hasFunction(FunctionName, SILLinkage::PublicExternal) 
to get the SILFunction. The FunctionName should be a mangled name of your 
Array.concat(A:Element) function. 

> 
> I’ve tried getting the stdlib module from the ASTContext, and looking through 
> the visible decls, but the function that I want isn’t there. The next thing I 
> was going to try was recursively looking through the imports, but I thought 
> I’d stop to do a sanity check with the mailing list.
> 
> It seems like even if I did succeed in getting a FuncRef to the generic 
> `Array.append`, I’d still need to figure out how to get the specialized 
> version, and add the appropriate declaration to the SIL. It also feels wrong 
> that I’m depending on stuff in the AST from a SILTransform.
> 

You can just create the invocation of  the generic version of Array.concat 
SILFunction (with a proper set of substitutions) and let the generic 
specializer produce a specialization for you. 

-Roman

> Thanks,
> 
> Ben
> _______________________________________________
> swift-dev mailing list
> swift-dev@swift.org
> https://lists.swift.org/mailman/listinfo/swift-dev

_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

Reply via email to