'C++ warning inlining failed in call xx, --param max-inline-insns-single limit reached

I am trying to use concurrent queue from : https://github.com/cameron314/concurrentqueue

I get multiple warnings like the one below at compile time:

concurrentqueue.h: In member function ‘virtual int MyCallbacks::Vbx(int*, void*, int*)’:
concurrentqueue.h:1378:21: warning: inlining failed in call to ‘bool moodycamel::ConcurrentQueue<T, Traits>::inner_enqueue(U&&) [with moodycamel::ConcurrentQueue<T, Traits>::AllocationMode canAlloc = moodycamel::ConcurrentQueue<Wrapper*, moodycamel::ConcurrentQueueDefaultTraits>::CanAlloc; U = Wrapper* const&; T = Wrapper*; Traits = moodycamel::ConcurrentQueueDefaultTraits]’: --param max-inline-insns-single limit reached [-Winline]
 1378 |         inline bool inner_enqueue(U&& element)
      |                     ^~~~~~~~~~~~~
concurrentqueue.h:1003:52: note: called from here
 1003 |                 else return inner_enqueue<CanAlloc>(item);
      |                             ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
concurrentqueue.h:1378:21: warning: inlining failed in call to ‘bool moodycamel::ConcurrentQueue<T, Traits>::inner_enqueue(U&&) [with moodycamel::ConcurrentQueue<T, Traits>::AllocationMode canAlloc = moodycamel::ConcurrentQueue<Wrapper*, moodycamel::ConcurrentQueueDefaultTraits>::CanAlloc; U = Wrapper* const&; T = Wrapper*; Traits = moodycamel::ConcurrentQueueDefaultTraits]’: --param max-inline-insns-single limit reached [-Winline]
 1378 |         inline bool inner_enqueue(U&& element)
      |                     ^~~~~~~~~~~~~
concurrentqueue.h:1003:52: note: called from here
 1003 |                 else return inner_enqueue<CanAlloc>(item);
      |                             ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~

I tried to add -finline-limit= but it gives me strange results. If value is 2000000 I get a lot less warnings if I use 3000000

I need it inlined. What is the correct way to fix it?

g++ v 11 on CentOS 9



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source