From 8700beee9367fdf95d146c810855125a51006063 Mon Sep 17 00:00:00 2001 From: Douglas Yung Date: Tue, 24 Jan 2023 12:59:15 -0800 Subject: [PATCH] Revert "[15/15][Clang][RISCV][NFC] Set data member under Policy as constants" This reverts commit 2b807336ad385e64a7d182d5fb67bdfe449707a3. This change is causing Windows builds to hang and out of memory errors with clang-15: - https://lab.llvm.org/buildbot/#/builders/17/builds/33129 - https://lab.llvm.org/buildbot/#/builders/174/builds/17069 - https://lab.llvm.org/buildbot/#/builders/83/builds/28484 - https://lab.llvm.org/buildbot/#/builders/172/builds/22803 - https://lab.llvm.org/buildbot/#/builders/216/builds/16210 --- clang/include/clang/Support/RISCVVIntrinsicUtils.h | 18 +++++++----------- clang/lib/Support/RISCVVIntrinsicUtils.cpp | 1 + 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/clang/include/clang/Support/RISCVVIntrinsicUtils.h b/clang/include/clang/Support/RISCVVIntrinsicUtils.h index 1ae7428..fc53d70 100644 --- a/clang/include/clang/Support/RISCVVIntrinsicUtils.h +++ b/clang/include/clang/Support/RISCVVIntrinsicUtils.h @@ -92,22 +92,15 @@ enum class TypeModifier : uint8_t { LLVM_MARK_AS_BITMASK_ENUM(LMUL1), }; -class Policy { -public: +struct Policy { + bool IsUnspecified = false; enum PolicyType { Undisturbed, Agnostic, }; - -private: - const bool IsUnspecified = false; - // The default assumption for an RVV instruction is TAMA, as an undisturbed - // policy generally will affect the performance of an out-of-order core. - const PolicyType TailPolicy = Agnostic; - const PolicyType MaskPolicy = Agnostic; + PolicyType TailPolicy = Agnostic; + PolicyType MaskPolicy = Agnostic; bool HasTailPolicy, HasMaskPolicy; - -public: Policy(bool HasTailPolicy, bool HasMaskPolicy) : IsUnspecified(true), HasTailPolicy(HasTailPolicy), HasMaskPolicy(HasMaskPolicy) {} @@ -429,6 +422,7 @@ public: return IntrinsicTypes; } Policy getPolicyAttrs() const { + assert(PolicyAttrs.IsUnspecified == false); return PolicyAttrs; } unsigned getPolicyAttrsBits() const { @@ -437,6 +431,8 @@ public: // The 1st bit simulates the `vma` of RVV // int PolicyAttrs = 0; + assert(PolicyAttrs.IsUnspecified == false); + if (PolicyAttrs.isTUMAPolicy()) return 2; if (PolicyAttrs.isTAMAPolicy()) diff --git a/clang/lib/Support/RISCVVIntrinsicUtils.cpp b/clang/lib/Support/RISCVVIntrinsicUtils.cpp index db78d83..25084dd 100644 --- a/clang/lib/Support/RISCVVIntrinsicUtils.cpp +++ b/clang/lib/Support/RISCVVIntrinsicUtils.cpp @@ -1017,6 +1017,7 @@ void RVVIntrinsic::updateNamesAndPolicy(bool IsMasked, bool HasPolicy, }; if (PolicyAttrs.isUnspecified()) { + PolicyAttrs.IsUnspecified = false; if (IsMasked) { Name += "_m"; if (HasPolicy) -- 2.7.4