+2004-06-30 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * call.c (build_over_call), typeck.c (build_function_call): Call
+ check_function_arguments instead of check_function_format.
+
2004-06-30 Joseph S. Myers <jsm@polyomino.org.uk>
* call.c (build_over_call), typeck.c (build_function_call): Update
converted_args = nreverse (converted_args);
- if (warn_format)
- check_function_format (TYPE_ATTRIBUTES (TREE_TYPE (fn)),
- converted_args);
+ check_function_arguments (TYPE_ATTRIBUTES (TREE_TYPE (fn)),
+ converted_args);
/* Avoid actually calling copy constructors and copy assignment operators,
if possible. */
if (coerced_params == error_mark_node)
return error_mark_node;
- /* Check for errors in format strings. */
+ /* Check for errors in format strings and inappropriately
+ null parameters. */
- if (warn_format)
- check_function_format (TYPE_ATTRIBUTES (fntype), coerced_params);
+ check_function_arguments (TYPE_ATTRIBUTES (fntype), coerced_params);
return build_cxx_call (function, coerced_params);
}
+2004-06-30 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * g++.dg/warn/nonnull1.C: New test.
+
2004-06-30 Eric Botcazou <ebotcazou@libertysurf.fr>
* gcc.dg/compat/compat-common.h: Wrap up CINT in
--- /dev/null
+// Test that "nonnull" attribute works for C++.
+// Origin: Joseph Myers <jsm@polyomino.org.uk>
+// { dg-do compile }
+// { dg-options "-Wall" }
+
+// The "nonnull" attribute is thoroughly tested for C, so here we
+// simply test that it works at all, as at one point the relevant
+// checking code was only called for C.
+
+extern void f (char *) __attribute__((nonnull));
+
+void
+g ()
+{
+ f (0); // { dg-warning "null" "null argument" }
+}