diff options
author | Marco Elver <elver@google.com> | 2022-09-06 15:48:41 +0200 |
---|---|---|
committer | Marco Elver <elver@google.com> | 2022-09-06 15:52:44 +0200 |
commit | 42836e283fc58d5cebbcbb2e8eb7619d92fb9c2d (patch) | |
tree | 11548affdf88abaec2dabced3769d71681e86751 /llvm/unittests/CodeGen/MachineInstrTest.cpp | |
parent | c70f6e1362e38f36dceca0342490d659aa45a1a5 (diff) | |
download | llvm-42836e283fc58d5cebbcbb2e8eb7619d92fb9c2d.zip llvm-42836e283fc58d5cebbcbb2e8eb7619d92fb9c2d.tar.gz llvm-42836e283fc58d5cebbcbb2e8eb7619d92fb9c2d.tar.bz2 |
[MachineInstr] Allow setting PCSections in ExtraInfo
Provide MachineInstr::setPCSection(), to propagate relevant metadata
through the backend. Use ExtraInfo to store the metadata.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D130876
Diffstat (limited to 'llvm/unittests/CodeGen/MachineInstrTest.cpp')
-rw-r--r-- | llvm/unittests/CodeGen/MachineInstrTest.cpp | 50 |
1 files changed, 40 insertions, 10 deletions
diff --git a/llvm/unittests/CodeGen/MachineInstrTest.cpp b/llvm/unittests/CodeGen/MachineInstrTest.cpp index 667ee5f..5552151 100644 --- a/llvm/unittests/CodeGen/MachineInstrTest.cpp +++ b/llvm/unittests/CodeGen/MachineInstrTest.cpp @@ -269,36 +269,49 @@ TEST(MachineInstrExtraInfo, AddExtraInfo) { MMOs.push_back(MMO); MCSymbol *Sym1 = MC->createTempSymbol("pre_label", false); MCSymbol *Sym2 = MC->createTempSymbol("post_label", false); - MDNode *MDN = MDNode::getDistinct(Ctx, None); + MDNode *HAM = MDNode::getDistinct(Ctx, None); + MDNode *PCS = MDNode::getDistinct(Ctx, None); ASSERT_TRUE(MI->memoperands_empty()); ASSERT_FALSE(MI->getPreInstrSymbol()); ASSERT_FALSE(MI->getPostInstrSymbol()); ASSERT_FALSE(MI->getHeapAllocMarker()); + ASSERT_FALSE(MI->getPCSections()); MI->setMemRefs(*MF, MMOs); ASSERT_TRUE(MI->memoperands().size() == 1); ASSERT_FALSE(MI->getPreInstrSymbol()); ASSERT_FALSE(MI->getPostInstrSymbol()); ASSERT_FALSE(MI->getHeapAllocMarker()); + ASSERT_FALSE(MI->getPCSections()); MI->setPreInstrSymbol(*MF, Sym1); ASSERT_TRUE(MI->memoperands().size() == 1); ASSERT_TRUE(MI->getPreInstrSymbol() == Sym1); ASSERT_FALSE(MI->getPostInstrSymbol()); ASSERT_FALSE(MI->getHeapAllocMarker()); + ASSERT_FALSE(MI->getPCSections()); MI->setPostInstrSymbol(*MF, Sym2); ASSERT_TRUE(MI->memoperands().size() == 1); ASSERT_TRUE(MI->getPreInstrSymbol() == Sym1); ASSERT_TRUE(MI->getPostInstrSymbol() == Sym2); ASSERT_FALSE(MI->getHeapAllocMarker()); + ASSERT_FALSE(MI->getPCSections()); - MI->setHeapAllocMarker(*MF, MDN); + MI->setHeapAllocMarker(*MF, HAM); ASSERT_TRUE(MI->memoperands().size() == 1); ASSERT_TRUE(MI->getPreInstrSymbol() == Sym1); ASSERT_TRUE(MI->getPostInstrSymbol() == Sym2); - ASSERT_TRUE(MI->getHeapAllocMarker() == MDN); + ASSERT_TRUE(MI->getHeapAllocMarker() == HAM); + ASSERT_FALSE(MI->getPCSections()); + + MI->setPCSections(*MF, PCS); + ASSERT_TRUE(MI->memoperands().size() == 1); + ASSERT_TRUE(MI->getPreInstrSymbol() == Sym1); + ASSERT_TRUE(MI->getPostInstrSymbol() == Sym2); + ASSERT_TRUE(MI->getHeapAllocMarker() == HAM); + ASSERT_TRUE(MI->getPCSections() == PCS); } TEST(MachineInstrExtraInfo, ChangeExtraInfo) { @@ -316,12 +329,14 @@ TEST(MachineInstrExtraInfo, ChangeExtraInfo) { MMOs.push_back(MMO); MCSymbol *Sym1 = MC->createTempSymbol("pre_label", false); MCSymbol *Sym2 = MC->createTempSymbol("post_label", false); - MDNode *MDN = MDNode::getDistinct(Ctx, None); + MDNode *HAM = MDNode::getDistinct(Ctx, None); + MDNode *PCS = MDNode::getDistinct(Ctx, None); MI->setMemRefs(*MF, MMOs); MI->setPreInstrSymbol(*MF, Sym1); MI->setPostInstrSymbol(*MF, Sym2); - MI->setHeapAllocMarker(*MF, MDN); + MI->setHeapAllocMarker(*MF, HAM); + MI->setPCSections(*MF, PCS); MMOs.push_back(MMO); @@ -329,13 +344,15 @@ TEST(MachineInstrExtraInfo, ChangeExtraInfo) { ASSERT_TRUE(MI->memoperands().size() == 2); ASSERT_TRUE(MI->getPreInstrSymbol() == Sym1); ASSERT_TRUE(MI->getPostInstrSymbol() == Sym2); - ASSERT_TRUE(MI->getHeapAllocMarker() == MDN); + ASSERT_TRUE(MI->getHeapAllocMarker() == HAM); + ASSERT_TRUE(MI->getPCSections() == PCS); MI->setPostInstrSymbol(*MF, Sym1); ASSERT_TRUE(MI->memoperands().size() == 2); ASSERT_TRUE(MI->getPreInstrSymbol() == Sym1); ASSERT_TRUE(MI->getPostInstrSymbol() == Sym1); - ASSERT_TRUE(MI->getHeapAllocMarker() == MDN); + ASSERT_TRUE(MI->getHeapAllocMarker() == HAM); + ASSERT_TRUE(MI->getPCSections() == PCS); } TEST(MachineInstrExtraInfo, RemoveExtraInfo) { @@ -354,36 +371,49 @@ TEST(MachineInstrExtraInfo, RemoveExtraInfo) { MMOs.push_back(MMO); MCSymbol *Sym1 = MC->createTempSymbol("pre_label", false); MCSymbol *Sym2 = MC->createTempSymbol("post_label", false); - MDNode *MDN = MDNode::getDistinct(Ctx, None); + MDNode *HAM = MDNode::getDistinct(Ctx, None); + MDNode *PCS = MDNode::getDistinct(Ctx, None); MI->setMemRefs(*MF, MMOs); MI->setPreInstrSymbol(*MF, Sym1); MI->setPostInstrSymbol(*MF, Sym2); - MI->setHeapAllocMarker(*MF, MDN); + MI->setHeapAllocMarker(*MF, HAM); + MI->setPCSections(*MF, PCS); MI->setPostInstrSymbol(*MF, nullptr); ASSERT_TRUE(MI->memoperands().size() == 2); ASSERT_TRUE(MI->getPreInstrSymbol() == Sym1); ASSERT_FALSE(MI->getPostInstrSymbol()); - ASSERT_TRUE(MI->getHeapAllocMarker() == MDN); + ASSERT_TRUE(MI->getHeapAllocMarker() == HAM); + ASSERT_TRUE(MI->getPCSections() == PCS); MI->setHeapAllocMarker(*MF, nullptr); ASSERT_TRUE(MI->memoperands().size() == 2); ASSERT_TRUE(MI->getPreInstrSymbol() == Sym1); ASSERT_FALSE(MI->getPostInstrSymbol()); ASSERT_FALSE(MI->getHeapAllocMarker()); + ASSERT_TRUE(MI->getPCSections() == PCS); + + MI->setPCSections(*MF, nullptr); + ASSERT_TRUE(MI->memoperands().size() == 2); + ASSERT_TRUE(MI->getPreInstrSymbol() == Sym1); + ASSERT_FALSE(MI->getPostInstrSymbol()); + ASSERT_FALSE(MI->getHeapAllocMarker()); + ASSERT_FALSE(MI->getPCSections()); MI->setPreInstrSymbol(*MF, nullptr); ASSERT_TRUE(MI->memoperands().size() == 2); ASSERT_FALSE(MI->getPreInstrSymbol()); ASSERT_FALSE(MI->getPostInstrSymbol()); ASSERT_FALSE(MI->getHeapAllocMarker()); + ASSERT_FALSE(MI->getPCSections()); MI->setMemRefs(*MF, {}); ASSERT_TRUE(MI->memoperands_empty()); ASSERT_FALSE(MI->getPreInstrSymbol()); ASSERT_FALSE(MI->getPostInstrSymbol()); ASSERT_FALSE(MI->getHeapAllocMarker()); + ASSERT_FALSE(MI->getPCSections()); } TEST(MachineInstrDebugValue, AddDebugValueOperand) { |