[PATCH] D53207: Fix bug 26547 - alignof should return ABI alignment, not preferred alignment
Richard Smith - zygoloid via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Oct 12 12:39:19 PDT 2018
rsmith added a comment.
Thanks, this generally looks good, but it needs tests. For `_Alignof`, test/Sema/align-x86.c` would be a reasonable place for the test; for C++ `alignof`, I don't see a suitable existing test file, but you could add one to test/SemaCXX, perhaps based on test/Sema/align-x86.c.
================
Comment at: include/clang/Basic/LangOptions.h:128
+ /// Attempt to be ABI-compatible with code generated by Clang 7.0.x
+ /// (SVN r344257). This causes alignof (C++) and _Alignof (C11) to be
+ /// compatible with __alignof (i.e., return the preferred alignment)
----------------
Clang 7 was branched from SVN r338536.
================
Comment at: include/clang/Basic/LangOptions.h:131
+ /// rather than returning the required alignment.
+ /// see https://bugs.llvm.org/show_bug.cgi?id=26547 for explanation
+ Ver7,
----------------
Nit: Capitalize "See", add period. But I think you can actually just drop this line: we don't really need to justify why we now follow the rules of the relevant language standards.
================
Comment at: include/clang/Basic/LangOptions.h:132
+ /// see https://bugs.llvm.org/show_bug.cgi?id=26547 for explanation
+ Ver7,
+
----------------
You will also need to update the code in lib/Frontend/CompilerInvocation.cpp to use this new enumerator (search for `Ver6` to find the code you need to change).
================
Comment at: include/clang/Basic/LangOptions.h:284
+ FPOptions()
+ : fp_contract(LangOptions::FPC_Off), fenv_access(LangOptions::FEA_Off) {}
----------------
Please avoid reflowing unrelated lines; it makes future "svn annotate"s less useful.
================
Comment at: include/clang/Basic/TypeTraits.h:99-104
+ // used for GCC's __alignof,
+ UETT_PreferredAlignOf,
+ // used for C's _Alignof and C++'s alignof
+ // this distinction is important because __alignof
+ // returns preferred alignment
+ // _Alignof and alignof return the required alignment
----------------
Nit: comments should start with a capital letter and end with a period. Maybe also make these documentation comments (use `///`)?
================
Comment at: lib/AST/ExprConstant.cpp:5960
+
+ const bool alignOfReturnsPreferred =
+ Info.Ctx.getLangOpts().getClangABICompat() <= LangOptions::ClangABI::Ver7;
----------------
LLVM / Clang convention is to start variable names with a capital letter.
Repository:
rC Clang
https://reviews.llvm.org/D53207
More information about the cfe-commits
mailing list