aboutsummaryrefslogtreecommitdiff
path: root/gcc/c-family
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@gcc.gnu.org>2018-01-27 07:27:47 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2018-01-27 07:27:47 +0100
commit53723269d6c97ceb61b825006dbfd711a339eb81 (patch)
treef2232529ad35c38904865dfb738a816179c1101c /gcc/c-family
parent1f2460766e0e67648606c68a04c7b21aaa5d9a09 (diff)
downloadgcc-53723269d6c97ceb61b825006dbfd711a339eb81.zip
gcc-53723269d6c97ceb61b825006dbfd711a339eb81.tar.gz
gcc-53723269d6c97ceb61b825006dbfd711a339eb81.tar.bz2
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
Diffstat (limited to 'gcc/c-family')
-rw-r--r--gcc/c-family/ChangeLog17
-rw-r--r--gcc/c-family/c-cppbuiltin.c15
2 files changed, 24 insertions, 8 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 <jakub@redhat.com>
+
+ * 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 <boris@codesynthesis.com>
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 <dmalcolm@redhat.com>
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)
{