From 53723269d6c97ceb61b825006dbfd711a339eb81 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 27 Jan 2018 07:27:47 +0100 Subject: [PATCH] c-cppbuiltin.c (c_cpp_builtins): Use ggc_strdup for the fp_suffix argument. * c-cppbuiltin.c (c_cpp_builtins): Use ggc_strdup for the fp_suffix argument. (LAZY_HEX_FP_VALUES_CNT): Define. (lazy_hex_fp_values): Allow up to LAZY_HEX_FP_VALUES_CNT lazy hex fp values rather than just 12. (builtin_define_with_hex_fp_value): Likewise. * include/cpplib.h (enum cpp_builtin_type): Change BT_LAST_USER from BT_FIRST_USER + 31 to BT_FIRST_USER + 63. From-SVN: r257118 --- gcc/c-family/ChangeLog | 17 +++++++++++++---- gcc/c-family/c-cppbuiltin.c | 15 +++++++++++---- libcpp/ChangeLog | 7 ++++++- libcpp/include/cpplib.h | 2 +- 4 files changed, 31 insertions(+), 10 deletions(-) diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 7d29382..335eeeb 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,10 +1,19 @@ +2018-01-27 Jakub Jelinek + + * c-cppbuiltin.c (c_cpp_builtins): Use ggc_strdup for the fp_suffix + argument. + (LAZY_HEX_FP_VALUES_CNT): Define. + (lazy_hex_fp_values): Allow up to LAZY_HEX_FP_VALUES_CNT lazy hex fp + values rather than just 12. + (builtin_define_with_hex_fp_value): Likewise. + 2018-01-18 Boris Kolpackov PR other/70268 - * c-family/c.opt (-fmacro-prefix-map): New option. - * c-family/c-opts.c (c_common_handle_option): Handle it. - * c-family/c-lex.c (init_c_lex): Set remap_filename cpp callback. - * c-family/c-ppoutput.c (init_pp_output): Likewise. + * c.opt (-fmacro-prefix-map): New option. + * c-opts.c (c_common_handle_option): Handle it. + * c-lex.c (init_c_lex): Set remap_filename cpp callback. + * c-ppoutput.c (init_pp_output): Likewise. 2018-01-17 David Malcolm diff --git a/gcc/c-family/c-cppbuiltin.c b/gcc/c-family/c-cppbuiltin.c index c58e8e7..0624c00 100644 --- a/gcc/c-family/c-cppbuiltin.c +++ b/gcc/c-family/c-cppbuiltin.c @@ -1124,8 +1124,8 @@ c_cpp_builtins (cpp_reader *pfile) floatn_nx_types[i].extended ? "X" : ""); sprintf (csuffix, "F%d%s", floatn_nx_types[i].n, floatn_nx_types[i].extended ? "x" : ""); - builtin_define_float_constants (prefix, csuffix, "%s", csuffix, - FLOATN_NX_TYPE_NODE (i)); + builtin_define_float_constants (prefix, ggc_strdup (csuffix), "%s", + csuffix, FLOATN_NX_TYPE_NODE (i)); } /* For decfloat.h. */ @@ -1571,7 +1571,14 @@ struct GTY(()) lazy_hex_fp_value_struct int digits; const char *fp_suffix; }; -static GTY(()) struct lazy_hex_fp_value_struct lazy_hex_fp_values[12]; +/* Number of the expensive to compute macros we should evaluate lazily. + Each builtin_define_float_constants invocation calls + builtin_define_with_hex_fp_value 4 times and builtin_define_float_constants + is called for FLT, DBL, LDBL and up to NUM_FLOATN_NX_TYPES times for + FLTNN*. */ +#define LAZY_HEX_FP_VALUES_CNT (4 * (3 + NUM_FLOATN_NX_TYPES)) +static GTY(()) struct lazy_hex_fp_value_struct + lazy_hex_fp_values[LAZY_HEX_FP_VALUES_CNT]; static GTY(()) int lazy_hex_fp_value_count; static bool @@ -1616,7 +1623,7 @@ builtin_define_with_hex_fp_value (const char *macro, char dec_str[64], buf[256], buf1[128], buf2[64]; /* This is very expensive, so if possible expand them lazily. */ - if (lazy_hex_fp_value_count < 12 + if (lazy_hex_fp_value_count < LAZY_HEX_FP_VALUES_CNT && flag_dump_macros == 0 && !cpp_get_options (parse_in)->traditional) { diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 5d2aa26..fdddd93 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,8 +1,13 @@ +2018-01-27 Jakub Jelinek + + * include/cpplib.h (enum cpp_builtin_type): Change BT_LAST_USER from + BT_FIRST_USER + 31 to BT_FIRST_USER + 63. + 2018-01-18 Boris Kolpackov PR other/70268 * include/cpplib.h (cpp_callbacks::remap_filename): New callback. - * libcpp/macro.c (_cpp_builtin_macro_text): Call remap_filename for + * macro.c (_cpp_builtin_macro_text): Call remap_filename for __FILE__ and __BASE_FILE__. 2018-01-10 Kelvin Nilsen diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h index 9814d0d..3ad52d5 100644 --- a/libcpp/include/cpplib.h +++ b/libcpp/include/cpplib.h @@ -719,7 +719,7 @@ enum cpp_builtin_type BT_COUNTER, /* `__COUNTER__' */ BT_HAS_ATTRIBUTE, /* `__has_attribute__(x)' */ BT_FIRST_USER, /* User defined builtin macros. */ - BT_LAST_USER = BT_FIRST_USER + 31 + BT_LAST_USER = BT_FIRST_USER + 63 }; #define CPP_HASHNODE(HNODE) ((cpp_hashnode *) (HNODE)) -- 2.7.4