[PATCH] D118428: [clang-cl] Support the /JMC flag

Yuanfang Chen via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 8 12:11:19 PST 2022


ychen marked an inline comment as done.
ychen added inline comments.


================
Comment at: llvm/lib/CodeGen/JMCInstrumenter.cpp:180
+             "JMC instrument more than once?");
+      FunctionCallee Fn =
+          M.getOrInsertFunction(CheckFunctionName, getCheckFunctionType(Ctx));
----------------
hans wrote:
> might as well get the Function* already here?
> 
> ```
> CheckFunction = cast<Function>(M.getOrInsertFunction(...).getCallee());
> ```
sounds good.


================
Comment at: llvm/lib/CodeGen/TargetPassConfig.cpp:1096
+  if (TM->Options.JMCInstrument)
+    addPass(createJMCInstrumenterPass());
   addCodeGenPrepare();
----------------
hans wrote:
> could this be moved into addIRPasses()?
Yes, it could. `CFGuardCheckPass` is there for targets with COFF. I didn't put it there because I plan to make it work with ELF in the next step, putting it here is convenient. I don't feel strongly though.


================
Comment at: llvm/test/CodeGen/X86/jmc-instrument.ll:2
+; Check that the flag symbol is not full-qualified.
+; RUN: llc < %s -enable-jmc-instrument | FileCheck %s
+
----------------
hans wrote:
> hans wrote:
> > Since it's an IR pass, I think we don't need to have an llc test at all.
> I still think it's unusual to have an llc test for an IR pass. Are there any other examples where we do something similar?
yes, it is pretty rare. I wanted to test the `CodeViewDebug.cpp` change, however, the code path only triggers when the JMC pass is run. Using `llc` came to mind. I'm open to any alternative.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D118428/new/

https://reviews.llvm.org/D118428



More information about the llvm-commits mailing list