================ @@ -1206,6 +1233,47 @@ std::string Triple::normalize(StringRef Str) { } } + // Normalize DXIL triple if it does not include DXIL version number. + // Determine DXIL version number using the minor version number of Shader + // Model version specified in target triple, if any. Prior to decoupling DXIL + // version numbering from that of Shader Model DXIL version 1.Y corresponds to + // SM 6.Y. E.g., dxilv1.Y-unknown-shadermodelX.Y-hull + if (Components[0] == "dxil") { + if (Components.size() > 4) { + Components.resize(4); + } + // Add DXIL version only if shadermodel is specified in the triple + if (OS == Triple::ShaderModel) { + VersionTuple Ver = + parseVersionFromName(Components[2].drop_front(strlen("shadermodel"))); + // Default DXIL minor version when Shader Model version is anything other + // than 6.[0...8] or 6.x (which translates to latest current SM version) + // DXIL version corresponding to Shader Model version other than 6.x + // is 1.0 + unsigned DXILMinor = 0; + const unsigned SMMajor = 6; + const unsigned LatestCurrentDXILMinor = 8; + if (!Ver.empty()) { + if (Ver.getMajor() == SMMajor) { + if (std::optional<unsigned> SMMinor = Ver.getMinor()) { + DXILMinor = *SMMinor; + // Ensure specified minor version is supported + if (DXILMinor > LatestCurrentDXILMinor) { + report_fatal_error("Unsupported Shader Model version", false); + } + } + } + } else { + // Special case: DXIL minor version is set to LatestCurrentDXILMinor for + // shadermodel6.x is + if (Components[2] == "shadermodel6.x") { + DXILMinor = LatestCurrentDXILMinor; + } + } + Components[0] = + Components[0].str().append("v1.").append(std::to_string(DXILMinor)); ---------------- llvm-beanz wrote:
@bharadwajy this is your asan failure. You’re setting a stringref to a locally modified string temporary. https://github.com/llvm/llvm-project/pull/90809 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits