================ @@ -12,12 +12,47 @@ //===----------------------------------------------------------------------===// #include "llvm/Transforms/Instrumentation.h" +#include "llvm/IR/DiagnosticInfo.h" +#include "llvm/IR/DiagnosticPrinter.h" #include "llvm/IR/IntrinsicInst.h" #include "llvm/IR/Module.h" #include "llvm/TargetParser/Triple.h" using namespace llvm; +static cl::opt<bool> ClIgnoreRedundantInstrumentation( + "ignore-redundant-instrumentation", + cl::desc("Ignore redundant instrumentation"), cl::Hidden, cl::init(false)); + +namespace { +/// Diagnostic information for IR instrumentation reporting. +class DiagnosticInfoInstrumentation : public DiagnosticInfo { + const Twine &Msg; + +public: + DiagnosticInfoInstrumentation(const Twine &DiagMsg, + DiagnosticSeverity Severity = DS_Warning) + : DiagnosticInfo(DK_Linker, Severity), Msg(DiagMsg) {} + void print(DiagnosticPrinter &DP) const override { DP << Msg; } +}; +} // namespace + +/// Check if module has flag attached, if not add the flag. +bool llvm::checkIfAlreadyInstrumented(Module &M, StringRef Flag) { ---------------- skc7 wrote:
Thanks for the suggestion. Have updated the patch in the latest commit. Using DS_Error, causes second run of the pass to abort with error. So retained DS_Warning, so this returns true without abort and sanitizer passes return without doing second instrumentation. https://github.com/llvm/llvm-project/pull/99439 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits