Skip to content

Commit 1dd9d38

Browse files
committed
static std::pair<SanitizerKind::SanitizerOrdinal, llvm::SanitizerStatKind> ParseCFITypeCheckKind(CFITypeCheckKind TCK);
1 parent eafdee7 commit 1dd9d38

File tree

2 files changed

+13
-15
lines changed

2 files changed

+13
-15
lines changed

clang/lib/CodeGen/CGClass.cpp

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2779,9 +2779,11 @@ void CodeGenFunction::EmitTypeMetadataCodeForVCall(const CXXRecordDecl *RD,
27792779
}
27802780
}
27812781

2782-
void CodeGenFunction::ParseCFITypeCheckKind(CFITypeCheckKind TCK,
2783-
SanitizerKind::SanitizerOrdinal &M,
2784-
llvm::SanitizerStatKind &SSK) {
2782+
std::pair<SanitizerKind::SanitizerOrdinal, llvm::SanitizerStatKind>
2783+
CodeGenFunction::ParseCFITypeCheckKind(CFITypeCheckKind TCK) {
2784+
SanitizerKind::SanitizerOrdinal M;
2785+
llvm::SanitizerStatKind SSK;
2786+
27852787
switch (TCK) {
27862788
case CFITCK_VCall:
27872789
M = SanitizerKind::SO_CFIVCall;
@@ -2807,6 +2809,8 @@ void CodeGenFunction::ParseCFITypeCheckKind(CFITypeCheckKind TCK,
28072809
case CFITCK_VMFCall:
28082810
llvm_unreachable("unexpected sanitizer kind");
28092811
}
2812+
2813+
return std::make_pair(M, SSK);
28102814
}
28112815

28122816
void CodeGenFunction::EmitVTablePtrCheckForCall(const CXXRecordDecl *RD,
@@ -2816,10 +2820,9 @@ void CodeGenFunction::EmitVTablePtrCheckForCall(const CXXRecordDecl *RD,
28162820
if (!SanOpts.has(SanitizerKind::CFICastStrict))
28172821
RD = LeastDerivedClassWithSameLayout(RD);
28182822

2819-
SanitizerKind::SanitizerOrdinal Ordinal;
2820-
llvm::SanitizerStatKind SSK;
2821-
ParseCFITypeCheckKind(TCK, Ordinal, SSK);
2823+
auto [Ordinal, SSK] = ParseCFITypeCheckKind(TCK);
28222824
ApplyDebugLocation ApplyTrapDI(*this, SanitizerAnnotateDebugInfo(Ordinal));
2825+
28232826
EmitVTablePtrCheck(RD, VTable, TCK, Loc);
28242827
}
28252828

@@ -2842,9 +2845,7 @@ void CodeGenFunction::EmitVTablePtrCheckForCast(QualType T, Address Derived,
28422845
if (!SanOpts.has(SanitizerKind::CFICastStrict))
28432846
ClassDecl = LeastDerivedClassWithSameLayout(ClassDecl);
28442847

2845-
SanitizerKind::SanitizerOrdinal Ordinal;
2846-
llvm::SanitizerStatKind SSK;
2847-
ParseCFITypeCheckKind(TCK, Ordinal, SSK);
2848+
auto [Ordinal, SSK] = ParseCFITypeCheckKind(TCK);
28482849
ApplyDebugLocation ApplyTrapDI(*this, SanitizerAnnotateDebugInfo(Ordinal));
28492850

28502851
llvm::BasicBlock *ContBlock = nullptr;
@@ -2881,9 +2882,7 @@ void CodeGenFunction::EmitVTablePtrCheck(const CXXRecordDecl *RD,
28812882
!CGM.HasHiddenLTOVisibility(RD))
28822883
return;
28832884

2884-
SanitizerKind::SanitizerOrdinal M;
2885-
llvm::SanitizerStatKind SSK;
2886-
ParseCFITypeCheckKind(TCK, M, SSK);
2885+
auto [M, SSK] = ParseCFITypeCheckKind(TCK);
28872886
switch (TCK) {
28882887
case CFITCK_VCall:
28892888
case CFITCK_NVCall:

clang/lib/CodeGen/CodeGenFunction.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3365,9 +3365,8 @@ class CodeGenFunction : public CodeGenTypeCache {
33653365

33663366
/// Converts the CFITypeCheckKind into SanitizerKind::SanitizerOrdinal and
33673367
/// llvm::SanitizerStatKind.
3368-
void ParseCFITypeCheckKind(CFITypeCheckKind TCK,
3369-
SanitizerKind::SanitizerOrdinal &M,
3370-
llvm::SanitizerStatKind &SSK);
3368+
static std::pair<SanitizerKind::SanitizerOrdinal, llvm::SanitizerStatKind>
3369+
ParseCFITypeCheckKind(CFITypeCheckKind TCK);
33713370

33723371
/// Emit a check that \p Base points into an array object, which
33733372
/// we can access at index \p Index. \p Accessed should be \c false if we

0 commit comments

Comments
 (0)