[llvm-dev] how to add createLowerSwitchPass to PassManager object?

Taher via llvm-dev llvm-dev at lists.llvm.org
Wed Nov 17 16:13:40 PST 2021


nvm, found it.

auto* CurrentModule = F.getParent();

On Wed, Nov 17, 2021 at 3:56 PM Taher <work at taherx.dev> wrote:

> This is run on a function pass, specifically runOnFunction which only
> gives you current function &F.
>
> Where do you get current module &M from? Can you even run a lower switch
> pass using the legacy pass manager system?
>
> On Fri, Nov 12, 2021 at 5:09 PM Zhang <admin at mayuyu.io> wrote:
>
>> Hi:
>> As the message suggests, you'll need a PM for it.
>> Something like the following would do:
>>
>> ```
>> legacy::FunctionPassManager FPM(&M);;
>> FPM.add(createLowerSwitchPass());
>> FPM.run(Func)
>> ```
>>
>>
>> Zhang
>>
>>
>> ------------------ Original ------------------
>> *From: * "llvm-dev"<llvm-dev at lists.llvm.org>;
>> *Date: * Sat, Nov 13, 2021 02:54 AM
>> *To: * "llvm-dev"<llvm-dev at lists.llvm.org>;
>> *Subject: * [llvm-dev] how to add createLowerSwitchPass to PassManager
>> object?
>>
>> My pass crashes on the callsite of runOnFunction() as it calls
>> GetAnalysis to LazyValue internally.
>>
>> FunctionPass* lower = createLowerSwitchPass();
>> lower->runOnFunction(F);
>>
>> The crash log says: *Assertion failed: (Resolver && "Pass has not been
>> inserted into a PassManager object!")*
>>
>> How do I get the PassManager object to add LowerSwitchPass? I can't
>> happen to find the object anywhere. Can the legacy pass manager run lower
>> passes in llvm14? Alternatively, is there another method I can use to
>> create LowerSwitchPass with the new PassManager?
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20211117/2c85a04a/attachment.html>


More information about the llvm-dev mailing list