barannikov88 added inline comments.

================
Comment at: 
clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/pro-type-vararg.cpp:55
 void ignoredBuiltinsTest() {
-  (void)__builtin_assume_aligned(0, 8);
   (void)__builtin_constant_p(0);
----------------
The test should not be removed, it is here for a reason.
In fact, passing zero to a pointer parameter is valid in C and is accepted in 
C++ mode with a diagnostic (-Wzero-as-null-pointer-constant, disabled by 
default).



================
Comment at: clang/lib/Sema/SemaChecking.cpp:7984
       return true;
+    QualType firstArgType = FirstArgResult.get()->getType();
+
----------------
Variables should have CamelCase names.



================
Comment at: clang/lib/Sema/SemaChecking.cpp:7986
+
+    if (!firstArgType->isAnyPointerType()) {
+      QualType expectedType = Context.getPointerType(firstArgType);
----------------
Instead of directly checking for the pointer type, it is better to call 
`checkBuiltinArgument`, which will handle many corner cases.
See the uses of this function in this file.



================
Comment at: clang/test/Sema/builtin-assume-aligned.c:75
+int test14(int *a, int b) {
+  a = (int *)__builtin_assume_aligned(b, 32); // expected-error {{passing 
'int' to parameter of incompatible type 'int *'}}
+  return a[0];
----------------
The expected type is not `int *`, it is `cost void *` (according to the 
definition of the builtin in Builtins.def).



================
Comment at: clang/test/Sema/builtin-assume-aligned.c:77
+  return a[0];
+}
+
----------------
Please add a test that passes an array to the builtin. It should pass.



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

https://reviews.llvm.org/D149514

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

Reply via email to