diff options
Diffstat (limited to 'bolt')
-rw-r--r-- | bolt/include/bolt/Passes/PLTCall.h | 2 | ||||
-rw-r--r-- | bolt/include/bolt/Passes/TailDuplication.h | 2 | ||||
-rw-r--r-- | bolt/lib/Core/CallGraph.cpp | 4 | ||||
-rw-r--r-- | bolt/lib/Core/DebugData.cpp | 2 | ||||
-rw-r--r-- | bolt/lib/Rewrite/DWARFRewriter.cpp | 2 | ||||
-rw-r--r-- | bolt/unittests/Core/MCPlusBuilder.cpp | 76 |
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 |