Skip to content

Commit 5b5f50e

Browse files
committed
IntrinsicInfo: Adjust call to llvm::Intrinsic::getAttributes after LLVM change
See llvm/llvm-project#135642
1 parent d7d7713 commit 5b5f50e

File tree

5 files changed

+19
-17
lines changed

5 files changed

+19
-17
lines changed

include/swift/AST/Builtins.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,13 @@ class BuiltinInfo {
121121

122122
/// The information identifying the llvm intrinsic - its id and types.
123123
class IntrinsicInfo {
124-
mutable llvm::AttributeList Attrs =
125-
llvm::DenseMapInfo<llvm::AttributeList>::getEmptyKey();
124+
mutable llvm::AttributeSet FnAttrs =
125+
llvm::DenseMapInfo<llvm::AttributeSet>::getEmptyKey();
126+
126127
public:
127128
llvm::Intrinsic::ID ID;
128129
SmallVector<Type, 4> Types;
129-
const llvm::AttributeList &getOrCreateAttributes(ASTContext &Ctx) const;
130+
const llvm::AttributeSet &getOrCreateFnAttributes(ASTContext &Ctx) const;
130131
};
131132

132133
/// Turn a string like "release" into the LLVM enum.

lib/AST/Builtins.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,14 @@ bool BuiltinInfo::isReadNone() const {
4949
return strchr(BuiltinExtraInfo[(unsigned)ID].Attributes, 'n') != nullptr;
5050
}
5151

52-
const llvm::AttributeList &
53-
IntrinsicInfo::getOrCreateAttributes(ASTContext &Ctx) const {
54-
using DenseMapInfo = llvm::DenseMapInfo<llvm::AttributeList>;
55-
if (DenseMapInfo::isEqual(Attrs, DenseMapInfo::getEmptyKey())) {
56-
Attrs = llvm::Intrinsic::getAttributes(Ctx.getIntrinsicScratchContext(), ID);
52+
const llvm::AttributeSet &
53+
IntrinsicInfo::getOrCreateFnAttributes(ASTContext &Ctx) const {
54+
using DenseMapInfo = llvm::DenseMapInfo<llvm::AttributeSet>;
55+
if (DenseMapInfo::isEqual(FnAttrs, DenseMapInfo::getEmptyKey())) {
56+
FnAttrs =
57+
llvm::Intrinsic::getFnAttributes(Ctx.getIntrinsicScratchContext(), ID);
5758
}
58-
return Attrs;
59+
return FnAttrs;
5960
}
6061

6162
Type swift::getBuiltinType(ASTContext &Context, StringRef Name) {
@@ -2603,8 +2604,8 @@ getSwiftFunctionTypeForIntrinsic(llvm::Intrinsic::ID ID,
26032604
// Translate LLVM function attributes to Swift function attributes.
26042605
IntrinsicInfo II;
26052606
II.ID = ID;
2606-
auto attrs = II.getOrCreateAttributes(Context);
2607-
if (attrs.hasFnAttr(llvm::Attribute::NoReturn)) {
2607+
auto &attrs = II.getOrCreateFnAttributes(Context);
2608+
if (attrs.hasAttribute(llvm::Attribute::NoReturn)) {
26082609
ResultTy = Context.getNeverType();
26092610
if (!ResultTy)
26102611
return false;

lib/SIL/IR/SILInstruction.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1026,15 +1026,15 @@ MemoryBehavior SILInstruction::getMemoryBehavior() const {
10261026
// Handle LLVM intrinsic functions.
10271027
const IntrinsicInfo &IInfo = BI->getIntrinsicInfo();
10281028
if (IInfo.ID != llvm::Intrinsic::not_intrinsic) {
1029-
auto IAttrs = IInfo.getOrCreateAttributes(getModule().getASTContext());
1029+
auto &IAttrs = IInfo.getOrCreateFnAttributes(getModule().getASTContext());
10301030
auto MemEffects = IAttrs.getMemoryEffects();
10311031
// Read-only.
10321032
if (MemEffects.onlyReadsMemory() &&
1033-
IAttrs.hasFnAttr(llvm::Attribute::NoUnwind))
1033+
IAttrs.hasAttribute(llvm::Attribute::NoUnwind))
10341034
return MemoryBehavior::MayRead;
10351035
// Read-none?
10361036
return MemEffects.doesNotAccessMemory() &&
1037-
IAttrs.hasFnAttr(llvm::Attribute::NoUnwind)
1037+
IAttrs.hasAttribute(llvm::Attribute::NoUnwind)
10381038
? MemoryBehavior::None
10391039
: MemoryBehavior::MayHaveSideEffects;
10401040
}

lib/SIL/IR/SILModule.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -885,8 +885,8 @@ void SILModule::notifyMovedInstruction(SILInstruction *inst,
885885
bool SILModule::isNoReturnBuiltinOrIntrinsic(Identifier Name) {
886886
const auto &IntrinsicInfo = getIntrinsicInfo(Name);
887887
if (IntrinsicInfo.ID != llvm::Intrinsic::not_intrinsic) {
888-
return IntrinsicInfo.getOrCreateAttributes(getASTContext())
889-
.hasFnAttr(llvm::Attribute::NoReturn);
888+
return IntrinsicInfo.getOrCreateFnAttributes(getASTContext())
889+
.hasAttribute(llvm::Attribute::NoReturn);
890890
}
891891
const auto &BuiltinInfo = getBuiltinInfo(Name);
892892
switch (BuiltinInfo.ID) {

lib/SILOptimizer/Analysis/ARCAnalysis.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ static bool canApplyOfBuiltinUseNonTrivialValues(BuiltinInst *BInst) {
104104

105105
auto &II = BInst->getIntrinsicInfo();
106106
if (II.ID != llvm::Intrinsic::not_intrinsic) {
107-
auto attrs = II.getOrCreateAttributes(F->getASTContext());
107+
auto &attrs = II.getOrCreateFnAttributes(F->getASTContext());
108108
if (attrs.getMemoryEffects().doesNotAccessMemory()) {
109109
for (auto &Op : BInst->getAllOperands()) {
110110
if (!Op.get()->getType().isTrivial(*F)) {

0 commit comments

Comments
 (0)