summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/c-config-lang.in2
-rw-r--r--gcc/c-family/c-cppbuiltin.c14
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr44509.c9
5 files changed, 33 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index dfd0b7d1be7..a2778ae1557 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2010-06-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR bootstrap/44509
+ * c-config-lang.in (gtfiles): Add c-family/c-cppbuiltin.c.
+ * c-family/c-cppbuiltin.c: Include gt-c-family-c-cppbuiltin.h.
+ (lazy_hex_fp_values, lazy_hex_fp_value_count): Add GTY(()) markers.
+ (lazy_hex_fp_value, builtin_define_with_hex_fp_value): Use
+ ggc_strdup instead of xstrdup.
+
2010-06-14 Ira Rosen <irar@il.ibm.com>
PR tree-optimization/44507
diff --git a/gcc/c-config-lang.in b/gcc/c-config-lang.in
index 2565186b10d..d9138031190 100644
--- a/gcc/c-config-lang.in
+++ b/gcc/c-config-lang.in
@@ -22,4 +22,4 @@
# files used by C that have garbage collection GTY macros in them
# which therefore need to be scanned by gengtype.c.
-gtfiles="\$(srcdir)/c-lang.c \$(srcdir)/c-tree.h \$(srcdir)/c-decl.c \$(srcdir)/c-family/c-common.c \$(srcdir)/c-family/c-common.h \$(srcdir)/c-family/c-pragma.h \$(srcdir)/c-family/c-pragma.c \$(srcdir)/c-objc-common.c \$(srcdir)/c-parser.c \$(srcdir)/c-lang.h"
+gtfiles="\$(srcdir)/c-lang.c \$(srcdir)/c-tree.h \$(srcdir)/c-decl.c \$(srcdir)/c-family/c-common.c \$(srcdir)/c-family/c-common.h \$(srcdir)/c-family/c-cppbuiltin.c \$(srcdir)/c-family/c-pragma.h \$(srcdir)/c-family/c-pragma.c \$(srcdir)/c-objc-common.c \$(srcdir)/c-parser.c \$(srcdir)/c-lang.h"
diff --git a/gcc/c-family/c-cppbuiltin.c b/gcc/c-family/c-cppbuiltin.c
index 4ed6975e45b..77a92c39584 100644
--- a/gcc/c-family/c-cppbuiltin.c
+++ b/gcc/c-family/c-cppbuiltin.c
@@ -951,15 +951,16 @@ builtin_define_with_int_value (const char *macro, HOST_WIDE_INT value)
array and function allows it to be done lazily when __DBL_MAX__
etc. is first used. */
-static struct
+struct GTY(()) lazy_hex_fp_value_struct
{
const char *hex_str;
cpp_macro *macro;
enum machine_mode mode;
int digits;
const char *fp_suffix;
-} lazy_hex_fp_values[12];
-static int lazy_hex_fp_value_count;
+};
+static GTY(()) struct lazy_hex_fp_value_struct lazy_hex_fp_values[12];
+static GTY(()) int lazy_hex_fp_value_count;
static bool
lazy_hex_fp_value (cpp_reader *pfile ATTRIBUTE_UNUSED,
@@ -987,7 +988,7 @@ lazy_hex_fp_value (cpp_reader *pfile ATTRIBUTE_UNUSED,
gcc_assert (idx < node->value.macro->count);
node->value.macro->exp.tokens[idx].val.str.len = strlen (buf1);
node->value.macro->exp.tokens[idx].val.str.text
- = (const unsigned char *) xstrdup (buf1);
+ = (const unsigned char *) ggc_strdup (buf1);
return true;
}
@@ -1014,7 +1015,8 @@ builtin_define_with_hex_fp_value (const char *macro,
sprintf (buf1, "%s=%s", macro, buf2);
cpp_define (parse_in, buf1);
node = C_CPP_HASHNODE (get_identifier (macro));
- lazy_hex_fp_values[lazy_hex_fp_value_count].hex_str = xstrdup (hex_str);
+ lazy_hex_fp_values[lazy_hex_fp_value_count].hex_str
+ = ggc_strdup (hex_str);
lazy_hex_fp_values[lazy_hex_fp_value_count].mode = TYPE_MODE (type);
lazy_hex_fp_values[lazy_hex_fp_value_count].digits = digits;
lazy_hex_fp_values[lazy_hex_fp_value_count].fp_suffix = fp_suffix;
@@ -1173,3 +1175,5 @@ builtin_define_type_minmax (const char *min_macro, const char *max_macro,
cpp_define (parse_in, buf);
}
}
+
+#include "gt-c-family-c-cppbuiltin.h"
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2dadf092ff0..013f3bf6279 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-06-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR bootstrap/44509
+ * gcc.dg/pr44509.c: New test.
+
2010-06-14 Ira Rosen <irar@il.ibm.com>
PR tree-optimization/44507
diff --git a/gcc/testsuite/gcc.dg/pr44509.c b/gcc/testsuite/gcc.dg/pr44509.c
new file mode 100644
index 00000000000..7c50bd0fc28
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr44509.c
@@ -0,0 +1,9 @@
+/* PR bootstrap/44509 */
+/* { dg-do compile } */
+/* { dg-options "--param ggc-min-expand=0 --param ggc-min-heapsize=0" } */
+
+double
+foo (void)
+{
+ return __DBL_MAX__ - __FLT_MAX__;
+}