[llvm-dev] Calling LowerSwitchPass causing crash in llvm 9
mayuyu.io via llvm-dev
llvm-dev at lists.llvm.org
Thu Dec 26 22:50:30 PST 2019
There is no “switch” instruction in the target object code. It usually gets compiled into a switch table with instructions to load from it. Afaik
> 在 2019年12月26日，17:49，n3v3rm03 via llvm-dev <llvm-dev at lists.llvm.org> 写道：
> Sorry I found an early thread discussing this question. I guess I shouldn't create lower switch pass like this.
> However, I have another question, even if I don't call this pass, the switch instructions will be finally compiled into binary trees, is that correct?
> It seems only AMDGPU is using this pass. Is there any rule to call this pass or not?
>> On Thu, Dec 26, 2019 at 6:36 PM n3v3rm03 <n3v3rm03 at gmail.com> wrote:
>> I am trying to call LowerSwitchPass directly in my custom pass in this way:
>> FunctionPass *lower = createLowerSwitchPass();
>> But it will crash when running lower->runOnFunction(*f) in llvm-9.
>> I was using this method in llvm-8 and it worked fine. It seems the crash happens at the first line of the LowerSwitch::runOnFunction(Function &F) in the newer llvm:
>> LazyValueInfo *LVI = &getAnalysis<LazyValueInfoWrapperPass>().getLVI(); //crashed here
>> I can't figure out why this usage cause the compiler to crash? Am I calling function pass wrong?
>> Thank you for your help.
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev