@@ -126,25 +126,25 @@ std::string tryParseProfile(StringRef Profile) {
126126 return " " ;
127127}
128128
129- bool isLegalValidatorVersion (StringRef ValVersionStr, std::string &ErrorMsg ) {
129+ bool isLegalValidatorVersion (StringRef ValVersionStr, const Driver &D ) {
130130 auto VerPair = ValVersionStr.split (" ." );
131131 llvm::APInt APMajor, APMinor;
132-
133- if (VerPair. first . getAsInteger ( 0 , APMajor ) ||
134- VerPair. second . getAsInteger ( 0 , APMinor )) {
135- ErrorMsg =
136- " Format of validator version is \" <major>.<minor> \" (ex: \" 1.4 \" ). " ;
132+ VersionTuple Version;
133+ if (Version. tryParse (ValVersionStr) || Version. getBuild ( ) ||
134+ Version. getSubminor () || !Version. getMinor ( )) {
135+ D. Diag (diag::err_drv_invalid_format_dxil_validator_version)
136+ << ValVersionStr ;
137137 return false ;
138138 }
139- uint64_t Major = APMajor.getLimitedValue ();
140- uint64_t Minor = APMinor.getLimitedValue ();
139+
140+ uint64_t Major = Version.getMajor ();
141+ uint64_t Minor = Version.getMinor ().getValue ();
141142 if (Major > MaxDXILMajor || (Major == MaxDXILMajor && Minor > MaxDXILMinor)) {
142- ErrorMsg = " Validator version must be less than or equal to current "
143- " internal version." ;
143+ D.Diag (diag::err_drv_invalid_range_dxil_validator_version) << ValVersionStr;
144144 return false ;
145145 }
146146 if (Major == 0 && Minor != 0 ) {
147- ErrorMsg = " If validator major version is 0, minor version must also be 0. " ;
147+ D. Diag (diag::err_drv_invalid_empty_dxil_validator_version) << ValVersionStr ;
148148 return false ;
149149 }
150150 return true ;
@@ -185,10 +185,7 @@ HLSLToolChain::TranslateArgs(const DerivedArgList &Args, StringRef BoundArch,
185185 if (A->getOption ().getID () == options::OPT_dxil_validator_version) {
186186 StringRef ValVerStr = A->getValue ();
187187 std::string ErrorMsg;
188- if (!isLegalValidatorVersion (ValVerStr, ErrorMsg)) {
189- getDriver ().Diag (diag::err_drv_invalid_dxil_validator_version)
190- << ValVerStr << ErrorMsg;
191-
188+ if (!isLegalValidatorVersion (ValVerStr, getDriver ())) {
192189 continue ;
193190 }
194191 }
0 commit comments