Would C++ exception stops function from being inlined?

▼魔方 西西 提交于 2021-02-18 10:17:06

问题


Suppose I have a very simple function that I expect the compiler to inline it. But I may need to throw exception on seeing some invalid input, would that stop the compiler from inlining the function?


回答1:


A compiler can refuse to inline for any reason. gcc lists reasons why it might not inline a function, but exception throwing is not among them. Also, the option -Winline will cause the compiler to issue a warning if it can't inline a function that you marked as inline. You can try that and see if you are doing anything to prevent inlining.




回答2:


It is perfectly reasonable and valid for a compiler to inline a function that throws.




回答3:


I've just run into this situation with MSVC version 19. A function that throws an exception would not get inlined when compiling for x86. If I replace throw with exit(1) or if I compile for x86-64, it gets inlined just fine.



来源:https://stackoverflow.com/questions/7494399/would-c-exception-stops-function-from-being-inlined

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!