| 91 | } |
| 92 | |
| 93 | ASTDefNode *CalledFunctionMacroMapper::getASTDefNode(llvm::Instruction &I) { |
| 94 | auto *CB = dyn_cast<llvm::CallBase>(&I); |
| 95 | if (!CB) |
| 96 | return nullptr; |
| 97 | |
| 98 | auto *F = util::getCalledFunction(*CB); |
| 99 | if (!F) |
| 100 | return nullptr; |
| 101 | |
| 102 | IRNode Node(I); |
| 103 | const auto &Index = Node.getIndex(); |
| 104 | DBKey Key(Index.getPath(), Index.getLine(), Index.getColumn(), |
| 105 | F->getName().str()); |
| 106 | |
| 107 | if (DupKey.find(Key) != DupKey.end()) |
| 108 | return nullptr; |
| 109 | |
| 110 | auto Acc = DefMap.find(Key); |
| 111 | if (Acc == DefMap.end()) |
| 112 | return nullptr; |
| 113 | return Acc->second.get(); |
| 114 | } |
| 115 | |
| 116 | CalledFunctionMacroMapper::DBKey::DBKey(std::string FilePath, unsigned Line, |
| 117 | unsigned Column, |