================ @@ -4822,6 +4822,35 @@ struct MDSignedOrMDField : MDEitherFieldImpl<MDSignedField, MDField> { } }; +struct MDUnsignedOrMDField : MDEitherFieldImpl<MDUnsignedField, MDField> { + MDUnsignedOrMDField(uint64_t Default = 0, bool AllowNull = true) + : ImplTy(MDUnsignedField(Default), MDField(AllowNull)) {} + + MDUnsignedOrMDField(uint64_t Default, uint64_t Max, bool AllowNull = true) + : ImplTy(MDUnsignedField(Default, Max), MDField(AllowNull)) {} + + bool isMDUnsignedField() const { return WhatIs == IsTypeA; } + bool isMDField() const { return WhatIs == IsTypeB; } + uint64_t getMDUnsignedValue() const { + assert(isMDUnsignedField() && "Wrong field type"); + return A.Val; + } + Metadata *getMDFieldValue() const { + assert(isMDField() && "Wrong field type"); + return B.Val; + } + + Metadata *getValueAsMetadata(LLVMContext &Context) const { + if (isMDUnsignedField()) { + return ConstantAsMetadata::get( + ConstantInt::get(Type::getInt64Ty(Context), getMDUnsignedValue())); + } else if (isMDField()) { + return getMDFieldValue(); + } + return nullptr; ---------------- dwblaikie wrote:
LLVM's style avoids "else after return", favouring code like this: ``` if (...) return; if (...) return; return; ``` (& omitting `{}` from single-line blocks) https://github.com/llvm/llvm-project/pull/141106 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits