options: properly compare string arguments
authorMartin Liska <mliska@suse.cz>
Tue, 12 Jan 2021 12:20:18 +0000 (13:20 +0100)
committerMartin Liska <mliska@suse.cz>
Tue, 12 Jan 2021 13:04:28 +0000 (14:04 +0100)
Similarly to 7f967bd2a7ba156ede3fbb147e66dea5fb7137a6, we need to
compare string with strcmp.

gcc/ChangeLog:

PR c++/97284
* optc-save-gen.awk: Compare also n_target_save vars with
strcmp.

gcc/optc-save-gen.awk

index 85debfe0b642b14b2e23a23784ae4e5b6957feb7..b1f8592827520c9869650908f08b144452587600 100644 (file)
@@ -1036,8 +1036,10 @@ for (i = 0; i < n_target_save; i++) {
        type = var;
        sub("^.*[ *]", "", name)
        sub(" *" name "$", "", type)
-       if (target_save_decl[i] ~ "^const char \\*+[_" alnum "]+$")
+       if (target_save_decl[i] ~ "^const char \\*+[_" alnum "]+$") {
                var_target_str[n_target_str++] = name;
+               string_options_names[name]++
+       }
        else {
                if (target_save_decl[i] ~ " .*\\[.+\\]+$") {
                        size = name;
@@ -1451,7 +1453,7 @@ for (i = 0; i < n_opts; i++) {
                continue;
        checked_options[name]++
 
-       if (name in string_options_names) {
+       if (name in string_options_names || ("x_" 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 ")))";