aboutsummaryrefslogtreecommitdiff
path: root/bolt
diff options
context:
space:
mode:
Diffstat (limited to 'bolt')
-rw-r--r--bolt/include/bolt/Passes/PLTCall.h2
-rw-r--r--bolt/include/bolt/Passes/TailDuplication.h2
-rw-r--r--bolt/lib/Core/CallGraph.cpp4
-rw-r--r--bolt/lib/Core/DebugData.cpp2
-rw-r--r--bolt/lib/Rewrite/DWARFRewriter.cpp2
-rw-r--r--bolt/unittests/Core/MCPlusBuilder.cpp76
6 files changed, 82 insertions, 6 deletions
diff --git a/bolt/include/bolt/Passes/PLTCall.h b/bolt/include/bolt/Passes/PLTCall.h
index 09ef96e..9c46f5d 100644
--- a/bolt/include/bolt/Passes/PLTCall.h
+++ b/bolt/include/bolt/Passes/PLTCall.h
@@ -26,7 +26,7 @@ public:
explicit PLTCall(const cl::opt<bool> &PrintPass)
: BinaryFunctionPass(PrintPass) {}
- const char *getName() const override { return "PLT call optimization"; }
+ const char *getName() const override { return "plt-call-optimization"; }
bool shouldPrint(const BinaryFunction &BF) const override {
return BinaryFunctionPass::shouldPrint(BF);
}
diff --git a/bolt/include/bolt/Passes/TailDuplication.h b/bolt/include/bolt/Passes/TailDuplication.h
index a2fcab0..4a7ec08 100644
--- a/bolt/include/bolt/Passes/TailDuplication.h
+++ b/bolt/include/bolt/Passes/TailDuplication.h
@@ -143,7 +143,7 @@ public:
explicit TailDuplication() : BinaryFunctionPass(false) {}
- const char *getName() const override { return "tail duplication"; }
+ const char *getName() const override { return "tail-duplication"; }
Error runOnFunctions(BinaryContext &BC) override;
};
diff --git a/bolt/lib/Core/CallGraph.cpp b/bolt/lib/Core/CallGraph.cpp
index f1d5273..f07add3 100644
--- a/bolt/lib/Core/CallGraph.cpp
+++ b/bolt/lib/Core/CallGraph.cpp
@@ -22,7 +22,7 @@
#undef USE_SSECRC
#endif
-static LLVM_ATTRIBUTE_UNUSED inline size_t hash_int64_fallback(int64_t k) {
+[[maybe_unused]] static inline size_t hash_int64_fallback(int64_t k) {
uint64_t key = (unsigned long long)k;
// "64 bit Mix Functions", from Thomas Wang's "Integer Hash Function."
// http://www.concentric.net/~ttwang/tech/inthash.htm
@@ -35,7 +35,7 @@ static LLVM_ATTRIBUTE_UNUSED inline size_t hash_int64_fallback(int64_t k) {
return static_cast<size_t>(static_cast<uint32_t>(key));
}
-static LLVM_ATTRIBUTE_UNUSED inline size_t hash_int64(int64_t k) {
+[[maybe_unused]] static inline size_t hash_int64(int64_t k) {
#if defined(USE_SSECRC) && defined(__SSE4_2__)
size_t h = 0;
__asm("crc32q %1, %0\n" : "+r"(h) : "rm"(k));
diff --git a/bolt/lib/Core/DebugData.cpp b/bolt/lib/Core/DebugData.cpp
index 24a4c85..2687788 100644
--- a/bolt/lib/Core/DebugData.cpp
+++ b/bolt/lib/Core/DebugData.cpp
@@ -101,7 +101,7 @@ std::optional<AttrInfo> findAttributeInfo(const DWARFDie DIE,
return findAttributeInfo(DIE, AbbrevDecl, *Index);
}
-LLVM_ATTRIBUTE_UNUSED
+[[maybe_unused]]
static void printLE64(const std::string &S) {
for (uint32_t I = 0, Size = S.size(); I < Size; ++I) {
errs() << Twine::utohexstr(S[I]);
diff --git a/bolt/lib/Rewrite/DWARFRewriter.cpp b/bolt/lib/Rewrite/DWARFRewriter.cpp
index a7a4b66..5e3fa93 100644
--- a/bolt/lib/Rewrite/DWARFRewriter.cpp
+++ b/bolt/lib/Rewrite/DWARFRewriter.cpp
@@ -69,7 +69,7 @@ static void printDie(const DWARFDie &DIE) {
}
/// Lazily parse DWARF DIE and print it out.
-LLVM_ATTRIBUTE_UNUSED
+[[maybe_unused]]
static void printDie(DWARFUnit &DU, uint64_t DIEOffset) {
uint64_t OriginalOffsets = DIEOffset;
uint64_t NextCUOffset = DU.getNextUnitOffset();
diff --git a/bolt/unittests/Core/MCPlusBuilder.cpp b/bolt/unittests/Core/MCPlusBuilder.cpp
index af4cc9d..bc37ced 100644
--- a/bolt/unittests/Core/MCPlusBuilder.cpp
+++ b/bolt/unittests/Core/MCPlusBuilder.cpp
@@ -261,6 +261,82 @@ TEST_P(MCPlusBuilderTester, testAccessedRegsMultipleDefs) {
{AArch64::W5, AArch64::X5, AArch64::W5_HI});
}
+TEST_P(MCPlusBuilderTester, AArch64_Psign_Pauth_variants) {
+ if (GetParam() != Triple::aarch64)
+ GTEST_SKIP();
+
+ MCInst Paciasp = MCInstBuilder(AArch64::PACIASP);
+ MCInst Pacibsp = MCInstBuilder(AArch64::PACIBSP);
+ ASSERT_TRUE(BC->MIB->isPSignOnLR(Paciasp));
+ ASSERT_TRUE(BC->MIB->isPSignOnLR(Pacibsp));
+
+ MCInst PaciaSPLR =
+ MCInstBuilder(AArch64::PACIA).addReg(AArch64::LR).addReg(AArch64::SP);
+ MCInst PacibSPLR =
+ MCInstBuilder(AArch64::PACIB).addReg(AArch64::LR).addReg(AArch64::SP);
+ ASSERT_TRUE(BC->MIB->isPSignOnLR(PaciaSPLR));
+ ASSERT_TRUE(BC->MIB->isPSignOnLR(PacibSPLR));
+
+ MCInst PacizaX5 = MCInstBuilder(AArch64::PACIZA).addReg(AArch64::X5);
+ MCInst PacizbX5 = MCInstBuilder(AArch64::PACIZB).addReg(AArch64::X5);
+ ASSERT_FALSE(BC->MIB->isPSignOnLR(PacizaX5));
+ ASSERT_FALSE(BC->MIB->isPSignOnLR(PacizbX5));
+
+ MCInst Paciaz = MCInstBuilder(AArch64::PACIZA).addReg(AArch64::LR);
+ MCInst Pacibz = MCInstBuilder(AArch64::PACIZB).addReg(AArch64::LR);
+ ASSERT_TRUE(BC->MIB->isPSignOnLR(Paciaz));
+ ASSERT_TRUE(BC->MIB->isPSignOnLR(Pacibz));
+
+ MCInst Pacia1716 = MCInstBuilder(AArch64::PACIA1716);
+ MCInst Pacib1716 = MCInstBuilder(AArch64::PACIB1716);
+ ASSERT_FALSE(BC->MIB->isPSignOnLR(Pacia1716));
+ ASSERT_FALSE(BC->MIB->isPSignOnLR(Pacib1716));
+
+ MCInst Pacia171615 = MCInstBuilder(AArch64::PACIA171615);
+ MCInst Pacib171615 = MCInstBuilder(AArch64::PACIB171615);
+ ASSERT_FALSE(BC->MIB->isPSignOnLR(Pacia171615));
+ ASSERT_FALSE(BC->MIB->isPSignOnLR(Pacib171615));
+
+ MCInst Autiasp = MCInstBuilder(AArch64::AUTIASP);
+ MCInst Autibsp = MCInstBuilder(AArch64::AUTIBSP);
+ ASSERT_TRUE(BC->MIB->isPAuthOnLR(Autiasp));
+ ASSERT_TRUE(BC->MIB->isPAuthOnLR(Autibsp));
+
+ MCInst AutiaSPLR =
+ MCInstBuilder(AArch64::AUTIA).addReg(AArch64::LR).addReg(AArch64::SP);
+ MCInst AutibSPLR =
+ MCInstBuilder(AArch64::AUTIB).addReg(AArch64::LR).addReg(AArch64::SP);
+ ASSERT_TRUE(BC->MIB->isPAuthOnLR(AutiaSPLR));
+ ASSERT_TRUE(BC->MIB->isPAuthOnLR(AutibSPLR));
+
+ MCInst AutizaX5 = MCInstBuilder(AArch64::AUTIZA).addReg(AArch64::X5);
+ MCInst AutizbX5 = MCInstBuilder(AArch64::AUTIZB).addReg(AArch64::X5);
+ ASSERT_FALSE(BC->MIB->isPAuthOnLR(AutizaX5));
+ ASSERT_FALSE(BC->MIB->isPAuthOnLR(AutizbX5));
+
+ MCInst Autiaz = MCInstBuilder(AArch64::AUTIZA).addReg(AArch64::LR);
+ MCInst Autibz = MCInstBuilder(AArch64::AUTIZB).addReg(AArch64::LR);
+ ASSERT_TRUE(BC->MIB->isPAuthOnLR(Autiaz));
+ ASSERT_TRUE(BC->MIB->isPAuthOnLR(Autibz));
+
+ MCInst Autia1716 = MCInstBuilder(AArch64::AUTIA1716);
+ MCInst Autib1716 = MCInstBuilder(AArch64::AUTIB1716);
+ ASSERT_FALSE(BC->MIB->isPAuthOnLR(Autia1716));
+ ASSERT_FALSE(BC->MIB->isPAuthOnLR(Autib1716));
+
+ MCInst Autia171615 = MCInstBuilder(AArch64::AUTIA171615);
+ MCInst Autib171615 = MCInstBuilder(AArch64::AUTIB171615);
+ ASSERT_FALSE(BC->MIB->isPAuthOnLR(Autia171615));
+ ASSERT_FALSE(BC->MIB->isPAuthOnLR(Autib171615));
+
+ MCInst Retaa = MCInstBuilder(AArch64::RETAA);
+ MCInst Retab = MCInstBuilder(AArch64::RETAB);
+ ASSERT_FALSE(BC->MIB->isPAuthOnLR(Retaa));
+ ASSERT_FALSE(BC->MIB->isPAuthOnLR(Retab));
+ ASSERT_TRUE(BC->MIB->isPAuthAndRet(Retaa));
+ ASSERT_TRUE(BC->MIB->isPAuthAndRet(Retab));
+}
+
#endif // AARCH64_AVAILABLE
#ifdef X86_AVAILABLE