n3v3rm03 via llvm-dev
2019-Dec-26 09:36 UTC
[llvm-dev] Calling LowerSwitchPass causing crash in llvm 9
Hi, I am trying to call LowerSwitchPass directly in my custom pass in this way: FunctionPass *lower = createLowerSwitchPass(); lower->runOnFunction(*f); 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. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20191226/a76208ef/attachment.html>
n3v3rm03 via llvm-dev
2019-Dec-26 09:49 UTC
[llvm-dev] Calling LowerSwitchPass causing crash in llvm 9
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:> Hi, > > I am trying to call LowerSwitchPass directly in my custom pass in this way: > > > FunctionPass *lower = createLowerSwitchPass(); > lower->runOnFunction(*f); > > 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. >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20191226/42ab74ae/attachment.html>
mayuyu.io via llvm-dev
2019-Dec-27 06:50 UTC
[llvm-dev] Calling LowerSwitchPass causing crash in llvm 9
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 Zhang> 在 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: >> Hi, >> >> I am trying to call LowerSwitchPass directly in my custom pass in this way: >> >> >> FunctionPass *lower = createLowerSwitchPass(); >> lower->runOnFunction(*f); >> >> 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 > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20191227/78f727ee/attachment.html>