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