Would C++ exception stops function from being inlined?

后端 未结 3 2398
你的背包
你的背包 2021-02-19 19:34

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

相关标签:
3条回答
  • 2021-02-19 20:11

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

    0 讨论(0)
  • 2021-02-19 20:16

    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.

    0 讨论(0)
  • 2021-02-19 20:17

    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.

    0 讨论(0)
提交回复
热议问题