MCPcopy Create free account
hub / github.com/Samsung/UTopia / verifyFirstUse

Function verifyFirstUse

tests/rootdefanalysis/TestRootDef.cpp:835–889  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

833 } while (0)
834
835static inline bool verifyFirstUse(IRAccessHelper *IRAH,
836 RootDefAnalyzer &Analyzer,
837 std::string FuncName, unsigned BIdx,
838 unsigned IIdx, unsigned AIdx,
839 std::set<RDArgIndex> Answers,
840 bool Debug = false) {
841
842 auto *I = IRAH->getInstruction(FuncName, BIdx, IIdx);
843 if (!I) {
844 llvm::outs() << FuncName << " : " << BIdx << " : " << IIdx << "\n";
845 RETURN_ERR(false);
846 }
847 if (Debug)
848 llvm::outs() << "Instruction: " << *I << "\n";
849
850 auto RDs = Analyzer.getRootDefinitions(I->getOperandUse(AIdx));
851 if (RDs.size() != 1) {
852 llvm::outs() << "RD (" << RDs.size() << ")\n";
853 for (auto &RD : RDs)
854 llvm::outs() << RD << "\n";
855 RETURN_ERR(false);
856 }
857 if (Debug)
858 llvm::outs() << "Root Definition: " << *RDs.begin() << "\n";
859
860 auto &FUs = RDs.begin()->getFirstUses();
861 if (FUs.size() != Answers.size()) {
862 llvm::outs() << "Answers ======\n";
863 for (auto &Answer : Answers)
864 llvm::outs() << Answer << "\n";
865
866 llvm::outs() << "Founds ======\n";
867 for (auto &FU : FUs)
868 llvm::outs() << FU << "\n";
869
870 RETURN_ERR(false);
871 }
872
873 for (auto &Answer : Answers) {
874 if (FUs.find(Answer) != FUs.end())
875 continue;
876
877 llvm::outs() << "Answers ======\n";
878 for (auto &Answer : Answers)
879 llvm::outs() << Answer << "\n";
880
881 llvm::outs() << "Founds ======\n";
882 for (auto &FU : FUs)
883 llvm::outs() << FU << "\n";
884
885 RETURN_ERR(false);
886 }
887
888 return true;
889}
890
891TEST_F(TestRootDefAnalyzer, FirstUseP) {
892

Callers 1

TEST_FFunction · 0.85

Calls 6

getInstructionMethod · 0.80
getRootDefinitionsMethod · 0.80
sizeMethod · 0.80
beginMethod · 0.80
endMethod · 0.80
findMethod · 0.45

Tested by

no test coverage detected