/Qvec-reportN doesn't work with /Qipo in the IDE


Reference Number : DPD200139993


Version : 11.1


Product : Intel® C++ and Visual Fortran Compilers for Windows* and Intel® Parallel Composer


Operating System : Windows*


Problem Description : When using /Qipo from the Microsoft Visual Studio* IDE (/Qipo is enabled by default in C++ release configurations), /Qvec-reportN has no effect.  You may see this when using the compiler with /Qipo from the command-line as well, but make sure that you're passing /Qvec-reportN at link-time in that case, as it will only have an effect on the second pass phase of IPO.  You will need to link with icl.exe if that is the case, because xilink.exe (used by the IDE and usable from the command-line) has no option to enable vectorization messages.


Resolution Status : This is resolved in Intel® C++ Composer XE for Windows* (Intel® C++ Compiler 12.0).  For previous versions of the compiler, the only way to get vectorization messages is to use /Qvec-reportN, and either:

1. Disable /Qipo.  Note that you may not get a vectorizer report that exactly matches what you would get if you used IPO, as IPO might be able to eliminate loops entirely that would then not be vectorized, or enable vectorization where the compiler would not be ordinarily able to identify the loop as being safely vectorizable, but the vectorization report you do get should be useful.
or
2. Pull the linker line from the Visual Studio* buildlog and use icl.exe on the command line to link.  This will require some work to happen, as you will need to pull the object files more to the front, and then add the /link option to separate the compiler command options like /Qvec-report and /Qipo from the linker options.  For example, the buildlog will list the linker options as:

<linker options>
a.obj
b.obj
c.obj
<rest of objects>

And you would have to create a command line like:

icl.exe /Qipo /Qvec-report3 a.obj b.obj c.obj <other objects> /link <linker options>



[DISCLAIMER: The information on this web site is intended for hardware system manufacturers and software developers. Intel does not warrant the accuracy, completeness or utility of any information on this site. Intel may make changes to the information or the site at any time without notice. Intel makes no commitment to update the information at this site. ALL INFORMATION PROVIDED ON THIS WEBSITE IS PROVIDED "as is" without any express, implied, or statutory warranty of any kind including but not limited to warranties of merchantability, non-infringement of intellectual property, or fitness for any particular purpose. Independent companies manufacture the third-party products that are mentioned on this site. Intel is not responsible for the quality or performance of third-party products and makes no representation or warranty regarding such products. The third-party supplier remains solely responsible for the design, manufacture, sale and functionality of its products. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others.]
Para obtener información más completa sobre las optimizaciones del compilador, consulte nuestro Aviso de optimización.