aaron.ballman added inline comments.
================ Comment at: clang/docs/LanguageExtensions.rst:2844 +The builtins ``__builtin_align_up``, ``__builtin_align_down``, return their +first argument aligned up/down to the next multiple of the second argument. +The builtin ``__builtin_is_aligned`` returns whether the first argument is ---------------- Should explicitly specify whether the arguments are expressed in bytes or bits. ================ Comment at: clang/docs/LanguageExtensions.rst:2853 + +If Clang can determined that the alignment is be not a power of two at +compile-time, it will result in a compilation failure. If the alignment argument ---------------- determined -> determine is be not -> is not ================ Comment at: clang/lib/AST/ExprConstant.cpp:8154 +static CharUnits getBaseAlignment(EvalInfo &Info, const LValue &Value) { + if (const ValueDecl *VD = Value.Base.dyn_cast<const ValueDecl *>()) { + return Info.Ctx.getDeclAlign(VD); ---------------- Can go with `const auto *` where the type is spelled out in the initialization like this (here and elsewhere). ================ Comment at: clang/lib/AST/ExprConstant.cpp:8156-8158 + } else if (const Expr *E = Value.Base.dyn_cast<const Expr *>()) { + return GetAlignOfExpr(Info, E, UETT_AlignOf); + } else { ---------------- No `else` after a `return`. ================ Comment at: clang/lib/AST/ExprConstant.cpp:8173 + } + const unsigned SrcWidth = Info.Ctx.getIntWidth(ForType); + APSInt MaxValue(APInt::getOneBitSet(SrcWidth, SrcWidth - 1)); ---------------- Should drop the top-level `const` qualifier as that isn't an idiom we typically use for locals. ================ Comment at: clang/lib/AST/ExprConstant.cpp:10685 + if (Src.isLValue()) { + // If we evaluated a pointer, check the minimum known alignment + LValue Ptr; ---------------- Comment missing a full stop at the end. ================ Comment at: clang/lib/AST/ExprConstant.cpp:10720 + return Error(E); + assert(Src.isInt() && "Adjusting pointer alignment in IntExprEvaluator?"); + APSInt AlignedVal = ---------------- This assertion doesn't add much given the above line of code. ================ Comment at: clang/lib/AST/ExprConstant.cpp:10734 + return Error(E); + assert(Src.isInt() && "Adjusting pointer alignment in IntExprEvaluator?"); + APSInt AlignedVal = ---------------- Same here as above. ================ Comment at: clang/lib/CodeGen/CGBuiltin.cpp:14267 + QualType AstType = E->getArg(0)->getType(); + if (AstType->isArrayType()) { + Src = CGF.EmitArrayToPointerDecay(E->getArg(0)).getPointer(); ---------------- Can elide braces. ================ Comment at: clang/lib/Sema/SemaChecking.cpp:224 + SrcTy->isFunctionPointerType()) { + // XXX: this is not quite the right error message since we don't allow + // floating point types, or member pointers ---------------- Comment should probably be a FIXME unless you intend to address it as part of this patch. Also, the comment is missing a full stop (please check all comments in the patch as many of them are missing one). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D71499/new/ https://reviews.llvm.org/D71499 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits