diff options
author | Richard Biener <rguenther@suse.de> | 2022-02-14 09:29:20 +0100 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2022-02-14 09:31:17 +0100 |
commit | f7e26913187ce0ed35e340c4fd14104bbcd1932e (patch) | |
tree | ed5f56554192bcf897860116ef41be7309c65c75 /gcc/c-family | |
parent | 3f10e0d50b5e3b3f64bc9a1a29177518d5f4468d (diff) | |
download | gcc-f7e26913187ce0ed35e340c4fd14104bbcd1932e.zip gcc-f7e26913187ce0ed35e340c4fd14104bbcd1932e.tar.gz gcc-f7e26913187ce0ed35e340c4fd14104bbcd1932e.tar.bz2 |
c/104505 - ICE with internal function call in diagnostic expression
The following handles internal function calls similar to how the
C++ frontend does, avoiding ICEing on those.
2022-02-14 Richard Biener <rguenther@suse.de>
PR c/104505
gcc/c-family/
* c-pretty-print.cc (c_pretty_printer::postfix_expression): Handle
internal function calls.
gcc/testsuite/
* c-c++-common/pr104505.c: New testcase.
Diffstat (limited to 'gcc/c-family')
-rw-r--r-- | gcc/c-family/c-pretty-print.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/c-family/c-pretty-print.cc b/gcc/c-family/c-pretty-print.cc index ceedaea..dac1775 100644 --- a/gcc/c-family/c-pretty-print.cc +++ b/gcc/c-family/c-pretty-print.cc @@ -32,6 +32,7 @@ along with GCC; see the file COPYING3. If not see #include "selftest.h" #include "langhooks.h" #include "options.h" +#include "internal-fn.h" /* The pretty-printer code is primarily designed to closely follow (GNU) C and C++ grammars. That is to be contrasted with spaghetti @@ -1601,7 +1602,10 @@ c_pretty_printer::postfix_expression (tree e) { call_expr_arg_iterator iter; tree arg; - postfix_expression (CALL_EXPR_FN (e)); + if (CALL_EXPR_FN (e) != NULL_TREE) + postfix_expression (CALL_EXPR_FN (e)); + else + pp_string (this, internal_fn_name (CALL_EXPR_IFN (e))); pp_c_left_paren (this); FOR_EACH_CALL_EXPR_ARG (arg, iter, e) { |