Skip to content

Commit 50a64ef

Browse files
committed
constexpr fixes for clang-cl Windows DLL build
1 parent c2f0af5 commit 50a64ef

File tree

3 files changed

+19
-7
lines changed

3 files changed

+19
-7
lines changed

clang/lib/StaticAnalyzer/Core/Z3CrosscheckVisitor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ void Z3CrosscheckVisitor::finalizeVisitor(BugReporterContext &BRC,
9292
};
9393

9494
auto AttemptOnce = [&](const llvm::SMTSolverRef &Solver) -> Z3Result {
95-
constexpr auto getCurrentTime = llvm::TimeRecord::getCurrentTime;
95+
auto getCurrentTime = llvm::TimeRecord::getCurrentTime;
9696
unsigned InitialRLimit = GetUsedRLimit(Solver);
9797
double Start = getCurrentTime(/*Start=*/true).getWallTime();
9898
std::optional<bool> IsSAT = Solver->check();

llvm/include/llvm/BinaryFormat/Dwarf.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1191,32 +1191,32 @@ template <typename Enum> struct EnumTraits : public std::false_type {};
11911191

11921192
template <> struct EnumTraits<Attribute> : public std::true_type {
11931193
static constexpr char Type[3] = "AT";
1194-
static constexpr StringRef (*StringFn)(unsigned) = &AttributeString;
1194+
LLVM_ABI static StringRef (*const StringFn)(unsigned);
11951195
};
11961196

11971197
template <> struct EnumTraits<Form> : public std::true_type {
11981198
static constexpr char Type[5] = "FORM";
1199-
static constexpr StringRef (*StringFn)(unsigned) = &FormEncodingString;
1199+
LLVM_ABI static StringRef (*const StringFn)(unsigned);
12001200
};
12011201

12021202
template <> struct EnumTraits<Index> : public std::true_type {
12031203
static constexpr char Type[4] = "IDX";
1204-
static constexpr StringRef (*StringFn)(unsigned) = &IndexString;
1204+
LLVM_ABI static StringRef (*const StringFn)(unsigned);
12051205
};
12061206

12071207
template <> struct EnumTraits<Tag> : public std::true_type {
12081208
static constexpr char Type[4] = "TAG";
1209-
static constexpr StringRef (*StringFn)(unsigned) = &TagString;
1209+
LLVM_ABI static StringRef (*const StringFn)(unsigned);
12101210
};
12111211

12121212
template <> struct EnumTraits<LineNumberOps> : public std::true_type {
12131213
static constexpr char Type[4] = "LNS";
1214-
static constexpr StringRef (*StringFn)(unsigned) = &LNStandardString;
1214+
LLVM_ABI static StringRef (*const StringFn)(unsigned);
12151215
};
12161216

12171217
template <> struct EnumTraits<LocationAtom> : public std::true_type {
12181218
static constexpr char Type[3] = "OP";
1219-
static constexpr StringRef (*StringFn)(unsigned) = &OperationEncodingString;
1219+
LLVM_ABI static StringRef (*const StringFn)(unsigned);
12201220
};
12211221

12221222
inline uint64_t computeTombstoneAddress(uint8_t AddressByteSize) {

llvm/lib/BinaryFormat/Dwarf.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -911,6 +911,18 @@ StringRef llvm::dwarf::RLEString(unsigned RLE) {
911911
}
912912
}
913913

914+
StringRef (*const llvm::dwarf::EnumTraits<Tag>::StringFn)(unsigned) = TagString;
915+
StringRef (*const llvm::dwarf::EnumTraits<Attribute>::StringFn)(unsigned) =
916+
AttributeString;
917+
StringRef (*const llvm::dwarf::EnumTraits<Form>::StringFn)(unsigned) =
918+
FormEncodingString;
919+
StringRef (*const llvm::dwarf::EnumTraits<LocationAtom>::StringFn)(unsigned) =
920+
OperationEncodingString;
921+
StringRef (*const llvm::dwarf::EnumTraits<LineNumberOps>::StringFn)(unsigned) =
922+
LNStandardString;
923+
StringRef (*const llvm::dwarf::EnumTraits<Index>::StringFn)(unsigned) =
924+
IndexString;
925+
914926
constexpr char llvm::dwarf::EnumTraits<Attribute>::Type[];
915927
constexpr char llvm::dwarf::EnumTraits<Form>::Type[];
916928
constexpr char llvm::dwarf::EnumTraits<Index>::Type[];

0 commit comments

Comments
 (0)