This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGa43d1aa85256: [clang] Make 'align-mismatch' 
warning work without an associated function… (authored by arphaman).
Herald added a project: clang.

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D109402

Files:
  clang/include/clang/Basic/DiagnosticSemaKinds.td
  clang/lib/Sema/SemaChecking.cpp
  clang/test/CodeGen/typedef_alignment_mismatch_warning.cpp


Index: clang/test/CodeGen/typedef_alignment_mismatch_warning.cpp
===================================================================
--- clang/test/CodeGen/typedef_alignment_mismatch_warning.cpp
+++ clang/test/CodeGen/typedef_alignment_mismatch_warning.cpp
@@ -282,3 +282,7 @@
   auto *UA4ptr = new UsingAligned4(11);
   new (UA4ptr) UsingAligned4(12);
 }
+
+void testFunctionPointerArray(void (*fptr[10])(Aligned8Int *), Aligned2Int* 
src) {
+  fptr[0](src); // expected-warning {{passing 2-byte aligned argument to 
8-byte aligned parameter 1 may result in an unaligned pointer access}}
+}
Index: clang/lib/Sema/SemaChecking.cpp
===================================================================
--- clang/lib/Sema/SemaChecking.cpp
+++ clang/lib/Sema/SemaChecking.cpp
@@ -4887,7 +4887,7 @@
   if (ArgAlign < ParamAlign)
     Diag(Loc, diag::warn_param_mismatched_alignment)
         << (int)ArgAlign.getQuantity() << (int)ParamAlign.getQuantity()
-        << ParamName << FDecl;
+        << ParamName << (FDecl != nullptr) << FDecl;
 }
 
 /// Handles the checks for format strings, non-POD arguments to vararg
Index: clang/include/clang/Basic/DiagnosticSemaKinds.td
===================================================================
--- clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -6792,7 +6792,7 @@
   "taking address of packed member %0 of class or structure %q1 may result in 
an unaligned pointer value">,
   InGroup<DiagGroup<"address-of-packed-member">>;
 def warn_param_mismatched_alignment : Warning<
-  "passing %0-byte aligned argument to %1-byte aligned parameter %2 of %3 may 
result in an unaligned pointer access">,
+  "passing %0-byte aligned argument to %1-byte aligned parameter %2%select{| 
of %4}3 may result in an unaligned pointer access">,
   InGroup<DiagGroup<"align-mismatch">>;
 
 def err_objc_object_assignment : Error<


Index: clang/test/CodeGen/typedef_alignment_mismatch_warning.cpp
===================================================================
--- clang/test/CodeGen/typedef_alignment_mismatch_warning.cpp
+++ clang/test/CodeGen/typedef_alignment_mismatch_warning.cpp
@@ -282,3 +282,7 @@
   auto *UA4ptr = new UsingAligned4(11);
   new (UA4ptr) UsingAligned4(12);
 }
+
+void testFunctionPointerArray(void (*fptr[10])(Aligned8Int *), Aligned2Int* src) {
+  fptr[0](src); // expected-warning {{passing 2-byte aligned argument to 8-byte aligned parameter 1 may result in an unaligned pointer access}}
+}
Index: clang/lib/Sema/SemaChecking.cpp
===================================================================
--- clang/lib/Sema/SemaChecking.cpp
+++ clang/lib/Sema/SemaChecking.cpp
@@ -4887,7 +4887,7 @@
   if (ArgAlign < ParamAlign)
     Diag(Loc, diag::warn_param_mismatched_alignment)
         << (int)ArgAlign.getQuantity() << (int)ParamAlign.getQuantity()
-        << ParamName << FDecl;
+        << ParamName << (FDecl != nullptr) << FDecl;
 }
 
 /// Handles the checks for format strings, non-POD arguments to vararg
Index: clang/include/clang/Basic/DiagnosticSemaKinds.td
===================================================================
--- clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -6792,7 +6792,7 @@
   "taking address of packed member %0 of class or structure %q1 may result in an unaligned pointer value">,
   InGroup<DiagGroup<"address-of-packed-member">>;
 def warn_param_mismatched_alignment : Warning<
-  "passing %0-byte aligned argument to %1-byte aligned parameter %2 of %3 may result in an unaligned pointer access">,
+  "passing %0-byte aligned argument to %1-byte aligned parameter %2%select{| of %4}3 may result in an unaligned pointer access">,
   InGroup<DiagGroup<"align-mismatch">>;
 
 def err_objc_object_assignment : Error<
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to