diff --git a/include/dxc/Support/Global.h b/include/dxc/Support/Global.h index 54d9e85a3..39655589e 100644 --- a/include/dxc/Support/Global.h +++ b/include/dxc/Support/Global.h @@ -59,7 +59,7 @@ void CheckLLVMErrorCode(const std::error_code &ec); catch (std::bad_alloc&) { hr = E_OUTOFMEMORY; } \ catch (hlsl::Exception& _hlsl_exception_) { \ _Analysis_assume_(DXC_FAILED(_hlsl_exception_.hr)); \ - return hr = _hlsl_exception_.hr; \ + hr = _hlsl_exception_.hr; \ } \ catch (...) { hr = E_FAIL; } #define CATCH_CPP_RETURN_HRESULT() \ diff --git a/lib/HLSL/DxilValidation.cpp b/lib/HLSL/DxilValidation.cpp index 36d4c9f9d..f72a7af74 100644 --- a/lib/HLSL/DxilValidation.cpp +++ b/lib/HLSL/DxilValidation.cpp @@ -2652,16 +2652,13 @@ static void ValidateMetadata(ValidationContext &ValCtx) { ValCtx.EmitFormatError(ValidationRule::MetaTarget, {target.c_str()}); } + // The llvm.dbg.(cu/contents/defines/mainFileName/arg) named metadata nodes + // are only available in debug modules, not in the validated ones. + // llvm.bitsets is also disallowed. + // + // These are verified in lib/IR/Verifier.cpp. StringMap llvmNamedMeta; - // These llvm named metadata is verified in lib/IR/Verifier.cpp. - llvmNamedMeta["llvm.dbg.cu"]; - llvmNamedMeta["llvm.dbg.contents"]; - llvmNamedMeta["llvm.dbg.defines"]; - llvmNamedMeta["llvm.dbg.mainFileName"]; - llvmNamedMeta["llvm.dbg.args"]; llvmNamedMeta["llvm.ident"]; - // Not for HLSL which does not have vtable. - // llvmNamedMeta["llvm.bitsets"]; llvmNamedMeta["llvm.module.flags"]; for (auto &NamedMetaNode : pModule->named_metadata()) {