为什么/ Qvec-report:2什么都不返回? (MSVC 2012)

时间:2013-10-15 11:57:29

标签: visual-c++

我尝试了/ Qvec-report:2选项来查看MSVC自动矢量化器是否有用。不幸的是,我没有得到任何结果,积极也没有消极:

>  Microsoft (R) C/C++ Optimizing Compiler Version 17.00.60610.1 for x86
1>  Copyright (C) Microsoft Corporation.  All rights reserved.
1>  
1>  cl /c /Zi /nologo- /W3 /WX- /O2 /Ob2 /Oi /Oy /GL /D WIN32 /D _SCL_SECURE_NO_WARNINGS /D _CRT_SECURE_NO_WARNINGS /D NDEBUG /D _LIB /D _UNICODE /D UNICODE /Gm- /EHsc /MD /GS /Gy /arch:SSE2 /fp:fast /Zc:wchar_t /Zc:forScope /Yu"stdafx.h" /Fp"Release\(redacted).pch" /Fo"Release\\" /Fd"Release\vc110.pdb" /Gd /TP /analyze- /errorReport:prompt  /Qvec-report:2 (redacted).cpp
1>cl : Command line warning D9035: option 'nologo-' has been deprecated and will be removed in a future release
1>  
1>  (redacted).cpp
1>
1>Build succeeded.

我期待一条类似于

的消息
--- Analyzing function: main 
c:\source.cpp(4) : loop vectorized 
c:\source.cpp(5) : loop not vectorized due to reason '1200'

2 个答案:

答案 0 :(得分:5)

原因是/GL选项。使用链接时代码生成,编译步骤只是一个解析步骤,不包括任何矢量化。由于完全缺少该步骤,因此在编译时不会生成报告(正面或负面)。

链接器现在可以发出矢量化步骤。即使LTCG对象文件放在库中,也会发生这种情况。

答案 1 :(得分:0)

Visual Studio 2012's Auto-Vectorization Cookbook/O2/O2 /GL都会启用自动矢量化。