summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2004-06-30 22:30:34 +0000
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2004-06-30 22:30:34 +0000
commit8f9758e67bf7e0b4f74bd5d60c941ef0ca93aff5 (patch)
treeaee24b2a12a5ea311774eaf196ad657bc620dd50
parenta01275475cc2396fed5679e5a666df09e83148ca (diff)
downloadppe42-gcc-8f9758e67bf7e0b4f74bd5d60c941ef0ca93aff5.tar.gz
ppe42-gcc-8f9758e67bf7e0b4f74bd5d60c941ef0ca93aff5.zip
cp:
* call.c (build_over_call), typeck.c (build_function_call): Call check_function_arguments instead of check_function_format. testsuite: * g++.dg/warn/nonnull1.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@83937 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/call.c5
-rw-r--r--gcc/cp/typeck.c6
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/warn/nonnull1.C16
5 files changed, 30 insertions, 6 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 4174c4028bb..4d15664a4b3 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,10 @@
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
calls to check_function_format.
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 290fd6b2b43..76f0291a5a1 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -4723,9 +4723,8 @@ build_over_call (struct z_candidate *cand, int flags)
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. */
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 1dfb3375067..d099980e486 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -2483,10 +2483,10 @@ build_function_call (tree function, tree params)
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);
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 69d8c1926e2..b08ec7d199d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+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
diff --git a/gcc/testsuite/g++.dg/warn/nonnull1.C b/gcc/testsuite/g++.dg/warn/nonnull1.C
new file mode 100644
index 00000000000..46de7e9312c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/nonnull1.C
@@ -0,0 +1,16 @@
+// 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" }
+}
OpenPOWER on IntegriCloud