jyknight added inline comments.

================
Comment at: clang/lib/CodeGen/CGCall.cpp:4605
+  TryEmitAsCallSiteAttribute(const llvm::AttributeList &Attrs) {
+    llvm::AttributeList NewAttrs = Attrs;
+    if (AA)
----------------
durin42 wrote:
> jyknight wrote:
> > We do need to fallback to an assume for 
> > "if(CGF.SanOpts.has(SanitizerKind::Alignment)" however -- and NOT emit an 
> > allocalign (nor an align) attribute in that case.
> > 
> > This is necessary so that clang can emit explicit misalignment checks FIRST 
> > (and abort with a message if they fail), before letting LLVM assume the 
> > specified alignment. In order for the ubsan alignment check to work 
> > properly, we need to not trigger misalignment-UB before the check executes! 
> > 
> > See 
> > clang/test/CodeGen/catch-alignment-assumption-attribute-assume_aligned-on-function.cpp
> >  -- note how in the sanitized mode, it doesn't have an the "align 128" on 
> > the call result, but instead emits a bunch of code to test alignment, and 
> > branch to an ubsan abort on failure -- followed by the llvm.assume only on 
> > the successful branch. Although the test-case is only testing 
> > assume_aligned, the same behavior should be applicable to allocalign.
> > 
> > (Which shows that we clearly need a sanitized allocalign test-case, too)
> It sounds like (between this comment and the one below) I should just abandon 
> the code-sharing between AllocAlignAttrEmitter and AssumeAlignedAttrEmitter - 
> is that right?
> 
> Also, should I be making a new test case or adding to an existing one for a 
> sanitized allocalign test case? Is that an llvm-level thing or a clang-level 
> thing?
Agree, it does sound like there's not going to be much code-sharing, since 
emitAlignmentAssumption is already separate. If you find it's clearer to make 
them be separate, that sounds reasonable.

Yes, there should be a test-case for sanitized allocalign, just like for 
sanitized assume_align. 
This sanitizer is all in the frontend, see 
clang/test/CodeGen/catch-alignment-assumption-attribute-assume_aligned-on-function.cpp



Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D119271

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to