summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/analyzer/file-1.c
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2019-12-19 16:10:41 -0500
committerDavid Malcolm <dmalcolm@redhat.com>2020-01-14 21:10:45 -0500
commit24918a9b20c771984f41f90c3352c3ebee8b5e6f (patch)
treec43e7b6c06c3183bee103da0ff484e6846c7454c /gcc/testsuite/gcc.dg/analyzer/file-1.c
parentd666ae9862a06cab12108607c516a8475b4fb766 (diff)
downloadgcc-devel/analyzer.tar.gz
analyzer: add -Wanalyzer-use-of-closed-filedevel/analyzer
gcc/analyzer/ChangeLog: * analyzer.opt (Wanalyzer-use-of-closed-file): New option. * sm-file.cc (class use_of_closed_file): New file_diagnostic subclass. (find_file_param): New function. (fileptr_state_machine::on_stmt): Complain about operations on closed files. gcc/ChangeLog: * doc/invoke.texi (-Wanalyzer-use-of-closed-file): Document new option. gcc/testsuite/ChangeLog: * gcc.dg/analyzer/file-1.c (test_5): New test.
Diffstat (limited to 'gcc/testsuite/gcc.dg/analyzer/file-1.c')
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/file-1.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/analyzer/file-1.c b/gcc/testsuite/gcc.dg/analyzer/file-1.c
index ba516afc8af..8531fb0296c 100644
--- a/gcc/testsuite/gcc.dg/analyzer/file-1.c
+++ b/gcc/testsuite/gcc.dg/analyzer/file-1.c
@@ -47,3 +47,11 @@ test_4 (const char *path)
return; /* { dg-warning "leak of FILE 'f'" } */
}
+
+void
+test_5 (FILE *f, const char *msg)
+{
+ fclose (f); /* { dg-message "\\(1\\) file closed here" } */
+ fprintf (f, "foo: %s", msg); /* { dg-warning "use of closed FILE 'f'" } */
+ /* { dg-message "\\(2\\) use of closed FILE 'f'; closed at \\(1\\)" "" { target *-*-* } .-1 } */
+}