diff options
author | Martin Liska <mliska@suse.cz> | 2020-06-18 20:37:51 +0200 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2020-06-24 09:24:06 +0200 |
commit | 7f967bd2a7ba156ede3fbb147e66dea5fb7137a6 (patch) | |
tree | d878005d2bf9eb6a66d34a86e132021134b3eff2 /gcc | |
parent | 4543acc87455646f2a910fe7a3322395a45255f0 (diff) | |
download | gcc-7f967bd2a7ba156ede3fbb147e66dea5fb7137a6.zip gcc-7f967bd2a7ba156ede3fbb147e66dea5fb7137a6.tar.gz gcc-7f967bd2a7ba156ede3fbb147e66dea5fb7137a6.tar.bz2 |
options: Properly compare string options.
gcc/ChangeLog:
* optc-save-gen.awk: Compare string options in cl_optimization_compare
by strcmp.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/optc-save-gen.awk | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/gcc/optc-save-gen.awk b/gcc/optc-save-gen.awk index 1b01008..760bf26 100644 --- a/gcc/optc-save-gen.awk +++ b/gcc/optc-save-gen.awk @@ -126,8 +126,10 @@ for (i = 0; i < n_opts; i++) { else if (otype ~ "^signed +char *$") var_opt_range[name] = "-128, 127" } - else if (otype ~ "^const char \\**$") + else if (otype ~ "^const char \\**$") { var_opt_string[n_opt_string++] = name; + string_options_names[name]++ + } else var_opt_other[n_opt_other++] = name; } @@ -382,8 +384,10 @@ if (have_save) { if (otype == var_type(flags[i])) var_target_range[name] = "" } - else if (otype ~ "^const char \\**$") + else if (otype ~ "^const char \\**$") { var_target_string[n_target_string++] = name; + string_options_names[name]++ + } else var_target_other[n_target_other++] = name; } @@ -966,8 +970,16 @@ for (i = 0; i < n_opts; i++) { continue; checked_options[name]++ - print " if (ptr1->x_" name " != ptr2->x_" name ")" - print " internal_error (\"%<global_options%> are modified in local context\");"; + if (name in string_options_names) { + print " if (ptr1->x_" name " != ptr2->x_" name ""; + print " && (!ptr1->x_" name" || !ptr2->x_" name + print " || strcmp (ptr1->x_" name", ptr2->x_" name ")))"; + print " internal_error (\"%<global_options%> are modified in local context\");"; + } + else { + print " if (ptr1->x_" name " != ptr2->x_" name ")" + print " internal_error (\"%<global_options%> are modified in local context\");"; + } } print "}"; |