MSVC hidden flags
I had seen a while ago the “hidden” MSVC flags that output interesting information such as /d2cgsummary or d1reportAllClassLayout.
At that moment I told myself:
Are there other hidden commands ?
I thought I should look into this, then forgot about it, but the recent article from Aras about /d1reportTime gave me enough motivation to take a few minutes to list all the unknown flags !
And here they are ! (it is quite easy to retrieve them from tools such as IDA Pro or OllyDbg)
The .dlls of the compiler
There are 3 .dll files involved with the cl.exe compiler (note their purpose is actually just a guess):
- c1.dll: the C frontend
- c1xx.dll: the C++ frontend
- c2.dll: the optimizer
Each dll has its own set of commands, so you need the /dX prefix to tell what dll the argument should be forwarded to. /d1------ is for the frontend (C or C++) and /d2------ for the optimizer. Note that you need to replace the - in the exported list by /dx.
The list of commands you’ve all been waiting for ! Some are well-documented flags, but I might make another post with the most interesting ones that are not documented another day !
The flags list
Note the flags listed are from the 19.16.27025.1 build of the compiler (Visual Studio 2017 15.9.4).
c1xx.dll
-ACf*-ACp*-ACr-AI#-ATTRDBG-Aall-Aall--Adfanoisy-Adisablecoreplugins-Afull-Alint-Alint--Alocationregex#-Amacroall-Amacroall--Amacroreboot-Amacroreboot--Amacrosrc-Amacrosrc--Amaxmemory#-Analyze-Anew-Anew*-Anewfailure#-Ao*-Apch-Apch*-Aperfmessages-Aprintast-AssociatedSymbols-Azm#-BNOPPCH-BPPCH-BcomputeZmValue-Bd%-Bident-Binl-Bm#-BnoWorkList-Brepro-Bscn-BuildingMSVCDLL-BuildingVCCorlib-Bv%-CompressPCH-EHa-EHc-EHs-ESc-FI#-FR#-FU#-FastFail-Fd#-Fi#-Fo*-Fp#-Fr#-Fv:#-G%d-Gil-Gt#-INCLUDE:-MDd-MLd-MPdiagMutex$-MTd-NTcompat-NewQname-NewQname--NewReturnUDT-NewReturnUDT--NonStandardNewDelete-NonStandardNoThrow-Ob#-PMasMB-ParseTrees:Errors-ParseTrees:FTB-ParseTrees:NewErrors-ParseTrees:OOL-ParseTrees:PT-ParseTrees:Print-ParseTrees:RDLU-ParseTrees:SW-ParseTrees:SWSig-ParseTrees:Sema-ParseTrees:SemaExtendedDecls-ParseTrees:SemaExtendedDecls--ParseTrees:SemaMemberAccess-ParseTrees:SemaMemberAccess--ParseTrees:TemplateId-ParseTrees:identErrors-ParseTrees:identErrors--ParseTrees:opBind--PrivateNativeTypes-PublicPDB-RTCc-RTCs-RTCu-ReturnUdtEHInline-ReturnUdtEHInline--SkipPchHash-WL--WS--WT#-Wall-WarnOnGlobals-Wv:#-Yc*-Yl*-Yu*-ZB*-ZBe-ZH:SHA_256-ZILP#-ZW:nostdlib-ZWbad_alloc-ZWcliboxing-ZWdbglog-ZWinstr-ZWodr-ZWoldTokenStreams-ZWtokens-ZWvirtPubAsNonVirt-ZX*-Zc:__cplusplus-Zc:__cplusplus--Zc:alignedNew-Zc:alignedNew--Zc:auto-Zc:auto--Zc:externConstexpr-Zc:forScope-Zc:forScope--Zc:implicitNoexcept-Zc:implicitNoexcept--Zc:noexceptTypes-Zc:noexceptTypes--Zc:offsetof--Zc:referenceBinding-Zc:referenceBinding--Zc:rvalueCast-Zc:rvalueCast--Zc:sizedDealloc-Zc:sizedDealloc--Zc:strictStrings-Zc:strictStrings--Zc:ternary-Zc:ternary--Zc:threadSafeInit-Zc:threadSafeInit--Zc:trigraphs-Zc:trigraphs--Zc:twoPhase-Zc:twoPhase--Zc:wchar_t-Zc:wchar_t--Zf--Zld-Zm#-Zp#-Zt#-acplog:*-aliasParseTrees-aliasParseTrees--allChunksReserved-analyze:WX--analyze:autolog-analyze:autolog--analyze:autolog:ext#-analyze:log#-analyze:max_paths#-analyze:model#-analyze:only-analyze:plugin#-analyze:quiet-analyze:quiet--analyze:ruleset#-analyze:stacksize#-autoclassinit-await-breakOnIlKey#-cbstring-clr:nomscorlib-clr:nostdlib-clr:oldCustomModifiers-clrNoPureCRT-clrinitlocals-clrpure-clrsafe-clrver$-constexpr:backtrace#-constexpr:depth#-constexpr:steps#-debugBreak%-debugCounter#-debugCounterBreak-debugtype:allsource-diagnostics:caret-diagnostics:caret--diagnostics:column-diagnostics:column--diagwarn#-displayColumn-doc#-errorreport:none-errorreport:prompt-errorreport:queue-errorreport:send-execution-charset:#-experimental:concepts-experimental:concepts--experimental:deterministic-experimental:deterministic--experimental:expressionEvaluationOrder-experimental:expressionEvaluationOrder--experimental:module-experimental:module--experimental:preprocessor-experimental:preprocessor--exportStaticDataMembers-exportStaticDataMembers--external:I#-external:W#-external:anglebrackets-external:templates--forceDisplayColumn-forceZ7-fpexcept-fpfast-fpstrict-gce-gce--hybrid:x86arm64-hybrid:x86native-ignorePchTimestamp-ignorePragmaWarningError-il$-import_no_path-import_no_registry-initall*-kernel-kernel--ltcg-module:demandLoad-module:demandLoad--module:displayToC-module:displayTokens-module:export-module:exportActiveMacros-module:exportMacro-module:interface-module:merge-module:mergeParseTrees--module:name-module:noStdIfc-module:output-module:parseTrees-module:parseTrees--module:reference-module:search-module:stdIfcDir-module:wrapper-module:wrapperMacros-noChunkWrite-noCodegen-noTypeTraitOptimization-nodatetime-noexpinl-nologo-nonUDToperators-nothreadsafestatics-omp-parsePackExpressions-parsePackExpressions--pathmap:#-pc#-permissive-permissive--qualifiedEnumsOK-reportAllClassLayout-reportClassLayoutChanges-reportMemory-reportSingleClassLayout#-reportTime-rttiSections-safedelete-scalableIncludeMaxFilterSize#-scalableinclude-scalableinclude--scalableinclude1-scalableincludeRemote1-sdlMode-showIncludes-sm#-source-charset:#-std:c++*-templateStats-trimfile:#-typedil-uselinevar-utf-8-validate-charset-validate-charset--variableTemplates-variableTemplates--vc7dname-vd#-versionLKG171-vmb-vmg-vmm-vms-vmv-vtguard:lvl#-w1#-w2#-w3#-w4#-warningLKG171-wd#-we#-wo#-zm#
c2.dll
-AlignFuncs-AllowCompatibleILVersions-AmpShaderInformation-AssertRecursiveInline-Bd-BinaryDevirt+-BinaryDevirt--Brepro-CollapseAtExit+-CollapseAtExit--ConservativeInteriorPointers-CoroOptsWorkaround-CoroOptsWorkaround--DisablePGIMT-DisableWPABUMT-DisableWPATDMT-EHa-EHr-EHs-EmitExProcDbgSym-EmitExProcDbgSym--EnablePGIMT-EnableWPABUMT-EnableWPATDMT-FA#-FAF-FAf-FH4-FH4--Fa#-FastFail-FastFail--FatObjData-FatObjFunc-Fd#-Fg#-FitObjData-FitObjFunc-Fl#-Fo#-Fs#-FuncCache#-FuncletComdat+-FuncletComdat--G#-Gil-Gs#-Gt#-H#-InlineDecisions:#-JMC-JMC--Loop#-MD-MDd-ML-MLd-MPX-MPdiagMutex#-MT-MTd-MakeHotPatch-MarkStaticBodiesCold+-MarkStaticBodiesCold--MixDataCode-NewPerfectLoopUnroll+-NewPerfectLoopUnroll--NoLUR-NoPrefetch-NoSmallFunctionOpt-NoTypeChanges-Ob#-ObjSubDir#-Og-OnlyPrePass-OnlySpecDevirtForInlining+-OnlySpecDevirtForInlining--OptimizeAMP-OptimizeHugeFunctions-OptimizeHugeFunctions--OptimizeMagicStatics+-OptimizeMagicStatics--Os-Ot-PGCMemMax#-PGCMemMin#-PPhase#-PgoPdbOff-PogoAggressive-PogoAlwaysSize#-PogoCodeCoverage-PogoColdOff-PogoColdOpt-PogoDFInline-PogoDeadOff-PogoDeadOpt-PogoDiagnose-PogoDwordProbe-PogoDynamicRatio-PogoInlineSimpleProbe+-PogoInlineSimpleProbe--PogoKmode-PogoNoDataDiff-PogoNoDllMainCallback-PogoNoMDS-PogoNoMDSBoost#-PogoNoMDSInlTh#-PogoNoRDataLayout-PogoNoShare-PogoNoThunks-PogoNotEmitCGNodeDbgInfo-PogoNotOptEditedFunc-PogoNtoskrnl-PogoPBInline-PogoProbeCalls+-PogoProbeCalls--PogoRedirConsiderArgs-PogoRedirLimit#-PogoSafeMode-PogoUseX86Pgd-PoolPageSize#-PreExec+-PreExec--PureFuncOpt-PureFuncOpt--Qfast_transcendentals-Qimprecise_fwaits-Qpar-Qpar-report:#-Qsafe_fp_loads-Qslpvec--Qvec--Qvec-mathlib--Qvec-report:#-Qvec-sse2only-ReturnUdtEHInline-ReturnUdtEHInline--S-SHPAddrTaken+-SHPAddrTaken--SHPLinkInclude+-SHPLinkInclude--SHPVerifyFuncs+-SHPVerifyFuncs--SIAuthor-SSAOPT_REJECT:#-SSAOPT_STOP:#-SSAOptimizer+-SSAOptimizer--SSAOptimizerCFG+-SSAOptimizerCFG--SecureHotPatch:#-SecureHotPatchFile:#-SepFallback+-SepFallback--ShowDecisionFile-SpecDevirt+-SpecDevirt--SpgoDensityTH#-SpgoMinCoverTH#-StrictInlineDecisions-TPReport-ThrowingNew-ThrowingNew--Timing-TurnOffWarn746-TypeModLimit#-TypeProp+-TypeProp--UI#-UndefIntOverflow+-UndefIntOverflow--UseExPgd-UseVTableDevirt+-UseVTableDevirt--VolatileMetadata-VolatileMetadata--W#-Wall-Y--Yc-Z7-ZI-ZW-ZW:nometadata-ZX-Za-Zi-Zi+-Zl-Zo--Zvc6-alignedVec-archAVX-archAVX2-archAVX512-archAVX512F-archSSE42-atom-await:heapelide-bigobj-callcap-cands-cap-cbstring-cgsummary-cgsummary+-cgthreads#-clinesize#-clrinitlocals-clrpure-clrsafe-coldfuncs:#-compiler:-cvtcil-datalayoutoff-db#-disablefirstbitfieldopts-doforcealign-dos-dshigh#-dslow#-dumpCallGraph:#-ef#-ehopt-entry:-epilogunwind-epilogunwindrequirev2-errorreport:none-errorreport:prompt-errorreport:queue-errorreport:send-experimental:deterministic-f#-fastcap-fixupsymbol:#-forceZ7-framechain-guard#-guard32bytealign-guardcfemu-guardcfgcheckfptrname:#-guardcfgcheckname:#-guardcfgdispatch-guardcfgdispatch--guardcfgdispatchfptrname:#-guardcfgdispatchname:#-guardcfgfuncptr-guardcheckesp#-guardcompat#-guardfastfail-guardfidsreloc-guardfidsreloc--guardgsforcfg-guardgsforcfg--guardgsnoshadow-guardignoresuppress-guardignoresuppress--guardimmportthunk-guardjumptables-guardjumptables--guardjumptables_dbgbreak-guardlongjmp-guardnochecks-guardnolongjmp-guardnolongjmp--guardnopadglobals-guardnothunkchecks-guardopttable-guardretpoline-guardretpoline--guardrevokeonexception-guardspecload-guardspecload--guardspecmode#-guardss#-guardssepistub-guardssepistub--guardssleafopt-guardssleafopt--guardssnogs-guardssnogs--guardssverifysp-guardssverifysp--guardswtablesuppress-guardswtablesuppress--hft#-home-hotfuncs:#-hotpatch-ignoreC1007-il#-incltcgcglimit#-incltcgclimit#-incltcgdiag-incltcgsummary-incremental-incremental_rebuild-initialAppDomain-inlLimitCount#-inlLimitFuncId#-inlLnDbg#-inlS#-inlT#-inlcasw#-inlcrmax#-inlcsw#-inld#-inldasw#-inlfcsa#-inlfcsw#-inlflcsw#-inlinelog-inlinelog2-inlinelog3-inlinelogdetails:#-inlinelogfull:#-inlinestats-inlipfw#-inlld#-inlmlsa#-inlnild#-inlniln#-inlnlw-inlnobr#-inlnold#-inlnoln#-inlocsa1#-inlocsa2#-inlocsa3#-inlocsa4#-inluserinl#-iobj#-iobjin:#-ipdb#-ipdbin:#-isize#-iso_volatile-iso_volatile--jumptablerdata-kernel-layoutD2D#-layoutF2Doff-linscan-loopopt-ltcg-ltcgEditFid#-ltcgEditNum#-ltcgEditVid#-ltcgNoDiff-ltcgNoRecompileCheck-ltcgTime-ltcgVCallsiteIgnore#-memoryBarriers-mnunmrf#-msilDebug-mtschedlimit#-new.obj-newcolor-newcolor--nocfgrngchk-nodatasort-noehopt-noguardshadowall-nolock-nomtdeps-nomttddeps-notypeopt-nowarn4715-nowarn4786-nowinrtopts-objdir:#-off#-omp-optref-pagepackeroff-pagesize#-palwinth#-pathmap:#-pchmap#-pgi#-pgo#-pgu#-pi#-pinssr#-pinth#-po#-preventIntermediateNaNs-psavepgd#-psepcodorder-psepcodth#-psickratio#-psinvalidoff-psinvalidon-pspeed#-pspinth#-pstypeth#-psvcalllimit#-psvcallopt#-psweight#-pv#-queuerand#-queueseed#-schdat#-sdlMode-searchAltPathForScope-siltcginstrs#-singleMethodCompile:#-size-spdname:#-speed-spgo-stkfill#-threads#-thunklayout-trimfile:#-tsiobj#-typedil-typeoptcfg#-useoldhandlers-vol#-wbrd#-winmdonly-wpasummary