I am using icpc version 13.1.0 and I am puzzled why my function is not inlined. The function is a overloaded + operator, with only a few additions inside. I tried to put the definition inside the class (implicit inlining?), but also the keywords __inline and __forceinline when the definition was not put in the class. In addition, I also tried the compiler options -inline-forceinline and -no-inline-factor, but all without luck. To understand why this function is not inlined, I am using option -opt-report. Find below a report snippet of what I think is the relevant part:
INLINING REPORT: (main) [1/2=50.0%]
-> (NOFORCE): _ZN6md_vecplERKS_(1) (isz = 13) (sz = 22 (7+15))
INLINING REPORT: (_ZN6md_vecplERKS_) [2/2=100.0%]
The problem is that I don't know how to read this. So here are my questions:
- can the verbosity be increased, or can it be printed in a more human readable form?
- is there any documentation on this?
- I also tried option -diag-dump and do see some
"forceinline could not be honored due to safety/correctness checks"
"__inline and __forceinline are not allowed here"
but I am not sure to what it applies, so it doesn't give me more clues either.
Any idea is more than welcome.
Thanks in advance,
Could you please forward me the source file for which there is no inlining happening? Also provide me with the icpc -V output and the compiler options that you have used.
Sukruth H V
I am sorry for the noise, but I can't reproduce things at the moment. That is, I see things being inlined now. I have to figure out what has changed. Thanks already for the quick responses.