[llvm-dev] Question about using multiple functions in a Function pass

Hiroshi Yamauchi via llvm-dev llvm-dev at lists.llvm.org
Wed Sep 11 08:48:36 PDT 2019


My understanding is that a pass type is supposed not to operate
outside its scope (module, function, loop, etc.) because the pass
manager might choose to 'batch' multiple passes of the same type (for
performance) or could run concurrently. It sounds like it's best to
use a module pass if the other functions in the same module need to be
read.

On Tue, Sep 10, 2019 at 11:46 AM Alexey Zhikhartsev via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
>
> Hi Iulia,
>
> Function passes are not allowed to process functions other than the current one. Please see http://llvm.org/docs/WritingAnLLVMPass.html#the-functionpass-class
>
> Alex
>
> On Tue., Sep. 10, 2019, 11:56 a.m. Iulia Stirb via llvm-dev, <llvm-dev at lists.llvm.org> wrote:
>>
>> Hi all,
>>
>> I would want to know if from the runOnFunction method of a Function pass, other functions in IR, except for the one received as parameter, can be obtained as well, from a call instruction, as follows:
>>
>> Function F = dyn_cast<Function>(callInst);
>>
>> Or do I need a Module pass to work in IR with multiple functions from input source code? If so, it is accepted to have O(n^3) complexity in a module pass when iterating through each instruction of each basic block of each function in the module.
>>
>> Unrelated to the topic, I would also like to ask if a module object contains the IR for the entire application if the application contains multiple source files?
>>
>> Kind regards,
>> Iulia ȘTIRB
>>
>>
>>
>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


More information about the llvm-dev mailing list