fhahn added inline comments.
================ Comment at: clang/include/clang/Driver/Options.td:4287-4290 +def fpass_by_value_noalias: Flag<["-"], "fpass-by-value-noalias">, + HelpText<"Allows assuming no references to passed by value escape before " + "transferring execution to the called function. Note that this " + "does not hold for C++">; ---------------- rjmccall wrote: > rsmith wrote: > > This should be in `Group<f_Group>`. > The "Note" clause seems to muddy more than it clarifies. Maybe "has no > effect on non-trivially-copyable classes in C++"? Or add proper > documentation somewhere instead of trying to jam this into the help text. I've added the clarification, thanks! ================ Comment at: clang/lib/CodeGen/CGCall.cpp:2198 + // reference to the underlying object. Mark it accordingly. + Attrs.addAttribute(llvm::Attribute::NoAlias); + ---------------- rjmccall wrote: > This definitely can't be added unconditionally to all types; you need to rule > out non-trivial C++ class types, as well as types with ObjC weak references. Updated to rule out non trivially-copyable types. I am not sure how to best handle types with weak references. I did not manage to find any helpers that traverse a whole type to check if it contains weak references. I added `clang/test/CodeGenObjC/pass-by-value-noalias.m` and IIUC `noalias` should not be added for that case. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D85473/new/ https://reviews.llvm.org/D85473 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits