[PATCH] D105703: [hwasan] Use stack safety analysis.
Florian Mayer via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 15 02:56:23 PDT 2021
fmayer added a comment.
Thanks!
================
Comment at: clang/test/CodeGen/hwasan-stack-safety-analysis-asm.c:4
+
+int main(int argc, char **argv) {
+ char buf[10];
----------------
vitalybuka wrote:
> fmayer wrote:
> > vitalybuka wrote:
> > > this patch mostly change code under llvm/ so tests should be also there, as IR tests
> > >
> > >
> > I don't have strong feelings, but clang/test/CodeGen/lifetime-sanitizer.c is a very similar test, so I think we should either move all of these to llvm/ or add the new ones here to clang/. What do you think?
> That lifetime tests how clang inserts lifetime markers. So it must be in clang/ this is from https://reviews.llvm.org/D20759 which is clang only patch.
> Here the only change for clang is forwarded BuilderWrapper.getTargetTriple().
> I don't mind if you keep your tests here, but we also need something which tests llvm without clang as you change llvm tranformation.
> Usually if contributor changes code in llvm/, expectation is that check-llvm should discover regression. It's not always possible, but that's the goal and easy to do with this patch.
Thanks for the explanation. Moved to llvm/.
================
Comment at: llvm/include/llvm/Transforms/Instrumentation/HWAddressSanitizer.h:32
+ Triple TargetTriple = {});
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM);
static bool isRequired() { return true; }
----------------
vitalybuka wrote:
> fmayer wrote:
> > vitalybuka wrote:
> > > Why not from M.getTargetTriple() ?
> > Mostly for consistency with the legacy pass. Either way is fine for me though, what do you prefer?
> I don't know if will cause any issues, but usually most passes get triple from the module.
> I prefer we stay consistent with the rest of the code if possible.
>
I'll leave it as is, for consistency within this file, as we need to do it this way for the new pass manager.
================
Comment at: llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp:444
+ const StackSafetyGlobalInfo *SSI = nullptr;
+ if (shouldUseStackSafetyAnalysis(TargetTriple, IsOptNull)) {
+ SSI = &MAM.getResult<StackSafetyGlobalAnalysis>(M);
----------------
vitalybuka wrote:
> we usually don't use {} for single line
> also maybe good candidate for ?: operator
I think this would make a bit of a long tenary expression.
================
Comment at: llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp:390
+ void getAnalysisUsage(AnalysisUsage &AU) const override {
+ if (shouldUseStackSafetyAnalysis(TargetTriple)) {
+ AU.addRequired<StackSafetyGlobalInfoWrapperPass>();
----------------
vitalybuka wrote:
> fmayer wrote:
> > vitalybuka wrote:
> > > why we need to check TargetTriple for that?
> > Because we only need the stack safety analysis if we instrument the stack, which we do not do on x86_64 (see shouldInstrumentStack).
> I see, I forgot about this limitation.
> LGTM, but unconditional is fine as well, assuming we are going to have stack instrumentation at some point?
I am not sure we will ever add it for non-LAM x86_64.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D105703/new/
https://reviews.llvm.org/D105703
More information about the llvm-commits
mailing list