07-21-2011 02:58 PM
I've been working on the blitz++ expression template library, which instantiates a lotof templates,and I've noticed that v12 seems quite a lot slower than v11 in compiling overall. Moreover, in compiling some more complicated test cases, v12 will actually take so long so as to effectively not function: it takes v11.1.046 30s to compile this code, but with 12.0.3 I killed the compilation after 18 hours (!)when it still had not finished. This is not an optimization issue, as it happens regardless of optimization level. The mcpcom process at that point used 33gb of memory, but this is comfortably within the amount of memory on the machine, so it was not swapping.
To reproduce, do:
hg clonehttp://blitz.hg.sourceforge.net:8000/hgroot/blitz/blitz blitz
Any ideas what could cause this?
07-25-2011 09:26 AM
I think I figured this out. It was because the code had some #pragma forceinline recursive in it, which was not recognized by v11 so had been put in and not removed. When switching to v12 these were recognized and this is what killed the compilation time.
Incidentally, I thought the compiler warned if it doesn't recognize a pragma. At least this is what happens if you do #pragma saoetuh. So it's somewhat deceptive that v11 accepts the pragma but doesn't do anything with it.