diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-03-26 19:27:17 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-03-26 19:27:17 +0000 |
commit | f4858d06aeb586eda058b6b6baa4fc401db17f95 (patch) | |
tree | dc79a6a82c49de520ee04b9143b1f107c22fa275 /gcc/opts.c | |
parent | d9cee1b1a198bdd084f9c6afb3e6819a7f1bfc11 (diff) | |
download | gcc-f4858d06aeb586eda058b6b6baa4fc401db17f95.tar.gz |
PR c++/39554
* opts.c (warn_if_disallowed_function_p): Don't assume
get_callee_fndecl must return non-NULL.
* gcc.dg/wdisallowed-functions-3.c: New test.
* g++.dg/warn/Wdisallowed-functions-3.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145094 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/opts.c')
-rw-r--r-- | gcc/opts.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/gcc/opts.c b/gcc/opts.c index 631977097ec..2d5184fcb0e 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -745,13 +745,21 @@ flag_instrument_functions_exclude_p (tree fndecl) void warn_if_disallowed_function_p (const_tree exp) { - if (TREE_CODE(exp) == CALL_EXPR + if (TREE_CODE (exp) == CALL_EXPR && VEC_length (char_p, warning_disallowed_functions) > 0) { int i; char *s; - const char *fnname = - IDENTIFIER_POINTER (DECL_NAME (get_callee_fndecl (exp))); + tree fndecl = get_callee_fndecl (exp); + const char *fnname; + + if (fndecl == NULL) + return; + + fnname = get_name (fndecl); + if (fnname == NULL) + return; + for (i = 0; VEC_iterate (char_p, warning_disallowed_functions, i, s); ++i) { |