13#ifndef CLANG_CIR_DIALECT_IR_CIROPSENUMS_H
14#define CLANG_CIR_DIALECT_IR_CIROPSENUMS_H
16#include "mlir/IR/BuiltinAttributes.h"
17#include "clang/CIR/Dialect/IR/CIROpsEnums.h.inc"
22 return linkage == GlobalLinkageKind::ExternalLinkage;
25 return linkage == GlobalLinkageKind::AvailableExternallyLinkage;
28 return linkage == GlobalLinkageKind::LinkOnceAnyLinkage;
31 return linkage == GlobalLinkageKind::LinkOnceODRLinkage;
37 return linkage == GlobalLinkageKind::WeakAnyLinkage;
40 return linkage == GlobalLinkageKind::WeakODRLinkage;
46 return linkage == GlobalLinkageKind::InternalLinkage;
49 return linkage == GlobalLinkageKind::PrivateLinkage;
55 return linkage == GlobalLinkageKind::ExternalWeakLinkage;
58 return linkage == GlobalLinkageKind::CommonLinkage;
60[[maybe_unused]]
static bool
70 case GlobalLinkageKind::WeakAnyLinkage:
71 case GlobalLinkageKind::LinkOnceAnyLinkage:
72 case GlobalLinkageKind::CommonLinkage:
73 case GlobalLinkageKind::ExternalWeakLinkage:
76 case GlobalLinkageKind::AvailableExternallyLinkage:
77 case GlobalLinkageKind::LinkOnceODRLinkage:
78 case GlobalLinkageKind::WeakODRLinkage:
81 case GlobalLinkageKind::ExternalLinkage:
82 case GlobalLinkageKind::InternalLinkage:
83 case GlobalLinkageKind::PrivateLinkage:
86 llvm_unreachable(
"Fully covered switch above!");
101 return linkage == GlobalLinkageKind::WeakAnyLinkage ||
102 linkage == GlobalLinkageKind::WeakODRLinkage ||
103 linkage == GlobalLinkageKind::LinkOnceAnyLinkage ||
104 linkage == GlobalLinkageKind::LinkOnceODRLinkage ||
105 linkage == GlobalLinkageKind::CommonLinkage ||
106 linkage == GlobalLinkageKind::ExternalWeakLinkage;
122 return static_cast<Int
>(cir::MemOrder::Relaxed) <= value &&
123 value <=
static_cast<Int
>(cir::MemOrder::SequentiallyConsistent);
static bool isCommonLinkage(GlobalLinkageKind linkage)
static bool isLocalLinkage(GlobalLinkageKind linkage)
static bool isInterposableLinkage(GlobalLinkageKind linkage)
Whether the definition of this global may be replaced by something non-equivalent at link time.
bool operator<=(cir::MemOrder, cir::MemOrder)=delete
static bool isAvailableExternallyLinkage(GlobalLinkageKind linkage)
static bool isLinkOnceODRLinkage(GlobalLinkageKind linkage)
static bool isValidLinkage(GlobalLinkageKind gl)
bool isValidCIRAtomicOrderingCABI(Int value)
static bool isWeakODRLinkage(GlobalLinkageKind linkage)
static bool isLinkOnceAnyLinkage(GlobalLinkageKind linkage)
static bool isExternalLinkage(GlobalLinkageKind linkage)
static bool isExternalWeakLinkage(GlobalLinkageKind linkage)
static bool isLinkOnceLinkage(GlobalLinkageKind linkage)
static bool isWeakLinkage(GlobalLinkageKind linkage)
static bool isWeakForLinker(GlobalLinkageKind linkage)
Whether the definition of this global may be replaced at link time.
static bool isDiscardableIfUnused(GlobalLinkageKind linkage)
Whether the definition of this global may be discarded if it is not used in its compilation unit.
static bool isWeakAnyLinkage(GlobalLinkageKind linkage)
bool operator<(cir::MemOrder, cir::MemOrder)=delete
static bool isInternalLinkage(GlobalLinkageKind linkage)
bool operator>(cir::MemOrder, cir::MemOrder)=delete
bool operator>=(cir::MemOrder, cir::MemOrder)=delete
static bool isPrivateLinkage(GlobalLinkageKind linkage)
static bool isValidDeclarationLinkage(GlobalLinkageKind linkage)