aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/config/i386/i386.c2
-rw-r--r--gcc/gcc.c2
-rw-r--r--gcc/lto-wrapper.c2
-rw-r--r--gcc/opts.c16
-rw-r--r--gcc/opts.h1
6 files changed, 32 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6e5471c..4770f0f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,17 @@
2015-11-12 Martin Liska <mliska@suse.cz>
+ * config/i386/i386.c (ix86_valid_target_attribute_p):
+ Finalize options at the of the function.
+ * gcc.c (driver_get_configure_time_options): Call newly
+ introduced init_opts_obstack.
+ * lto-wrapper.c (main): Likewise.
+ * opts.c (init_opts_obstack): New function.
+ (init_options_struct): Call newly
+ introduced init_opts_obstack.
+ * opts.h (init_options_struct): Declare.
+
+2015-11-12 Martin Liska <mliska@suse.cz>
+
PR ipa/68035
* ipa-icf.c (void sem_item::set_hash): New function.
(sem_function::get_hash): Use renamed m_hash member variable.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 1a6b2fd..805f7a8 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -6237,6 +6237,8 @@ ix86_valid_target_attribute_p (tree fndecl,
DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl) = new_optimize;
}
+ finalize_options_struct (&func_options);
+
return ret;
}
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 8bbf5be..87d1979 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -9915,7 +9915,7 @@ driver_get_configure_time_options (void (*cb) (const char *option,
size_t i;
obstack_init (&obstack);
- gcc_obstack_init (&opts_obstack);
+ init_opts_obstack ();
n_switches = 0;
for (i = 0; i < ARRAY_SIZE (option_default_specs); i++)
diff --git a/gcc/lto-wrapper.c b/gcc/lto-wrapper.c
index 20e67ed..b9ac535 100644
--- a/gcc/lto-wrapper.c
+++ b/gcc/lto-wrapper.c
@@ -1355,7 +1355,7 @@ main (int argc, char *argv[])
{
const char *p;
- gcc_obstack_init (&opts_obstack);
+ init_opts_obstack ();
p = argv[0] + strlen (argv[0]);
while (p != argv[0] && !IS_DIR_SEPARATOR (p[-1]))
diff --git a/gcc/opts.c b/gcc/opts.c
index 9a3fbb3..930ae43 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -266,6 +266,20 @@ add_comma_separated_to_vector (void **pvec, const char *arg)
*pvec = v;
}
+/* Initialize opts_obstack if not initialized. */
+
+void
+init_opts_obstack (void)
+{
+ static bool opts_obstack_initialized = false;
+
+ if (!opts_obstack_initialized)
+ {
+ opts_obstack_initialized = true;
+ gcc_obstack_init (&opts_obstack);
+ }
+}
+
/* Initialize OPTS and OPTS_SET before using them in parsing options. */
void
@@ -273,7 +287,7 @@ init_options_struct (struct gcc_options *opts, struct gcc_options *opts_set)
{
size_t num_params = get_num_compiler_params ();
- gcc_obstack_init (&opts_obstack);
+ init_opts_obstack ();
*opts = global_options_init;
diff --git a/gcc/opts.h b/gcc/opts.h
index 38b3837..2eb2d97 100644
--- a/gcc/opts.h
+++ b/gcc/opts.h
@@ -323,6 +323,7 @@ extern void decode_cmdline_options_to_array (unsigned int argc,
extern void init_options_once (void);
extern void init_options_struct (struct gcc_options *opts,
struct gcc_options *opts_set);
+extern void init_opts_obstack (void);
extern void finalize_options_struct (struct gcc_options *opts);
extern void decode_cmdline_options_to_array_default_mask (unsigned int argc,
const char **argv,