diff options
author | Jan Beulich <jbeulich@suse.com> | 2022-07-05 08:39:43 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2022-07-05 08:39:43 +0200 |
commit | 8180707f9042b70a14b55cb147724c323e6042b6 (patch) | |
tree | b64e98fb77cbc4cb20921c3dbc7c0d2bde04020d /gas | |
parent | 10e52570b8c1f3257578dfd6b84adc711bce4c0d (diff) | |
download | gdb-8180707f9042b70a14b55cb147724c323e6042b6.zip gdb-8180707f9042b70a14b55cb147724c323e6042b6.tar.gz gdb-8180707f9042b70a14b55cb147724c323e6042b6.tar.bz2 |
x86: de-duplicate sub-architecture strings accumulation
Introduce a helper function to replace 4 instances of similar code. Use
reconcat() to cover the previously explicit free().
Diffstat (limited to 'gas')
-rw-r--r-- | gas/config/tc-i386.c | 52 |
1 files changed, 14 insertions, 38 deletions
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 288bbe1..e3501b2 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -2848,6 +2848,16 @@ check_cpu_arch_compatible (const char *name ATTRIBUTE_UNUSED, } static void +extend_cpu_sub_arch_name (const char *name) +{ + if (cpu_sub_arch_name) + cpu_sub_arch_name = reconcat (cpu_sub_arch_name, cpu_sub_arch_name, + name, (const char *) NULL); + else + cpu_sub_arch_name = xstrdup (name); +} + +static void set_cpu_arch (int dummy ATTRIBUTE_UNUSED) { SKIP_WHITESPACE (); @@ -2895,16 +2905,7 @@ set_cpu_arch (int dummy ATTRIBUTE_UNUSED) if (!cpu_flags_equal (&flags, &cpu_arch_flags)) { - if (cpu_sub_arch_name) - { - char *name = cpu_sub_arch_name; - cpu_sub_arch_name = concat (name, - cpu_arch[j].name, - (const char *) NULL); - free (name); - } - else - cpu_sub_arch_name = xstrdup (cpu_arch[j].name); + extend_cpu_sub_arch_name (string); cpu_arch_flags = flags; cpu_arch_isa_flags = flags; } @@ -2928,15 +2929,7 @@ set_cpu_arch (int dummy ATTRIBUTE_UNUSED) cpu_noarch[j].flags); if (!cpu_flags_equal (&flags, &cpu_arch_flags)) { - if (cpu_sub_arch_name) - { - char *name = cpu_sub_arch_name; - cpu_sub_arch_name = concat (name, string, - (const char *) NULL); - free (name); - } - else - cpu_sub_arch_name = xstrdup (string); + extend_cpu_sub_arch_name (string); cpu_arch_flags = flags; cpu_arch_isa_flags = flags; } @@ -13403,16 +13396,7 @@ md_parse_option (int c, const char *arg) if (!cpu_flags_equal (&flags, &cpu_arch_flags)) { - if (cpu_sub_arch_name) - { - char *name = cpu_sub_arch_name; - cpu_sub_arch_name = concat (name, - cpu_arch[j].name, - (const char *) NULL); - free (name); - } - else - cpu_sub_arch_name = xstrdup (cpu_arch[j].name); + extend_cpu_sub_arch_name (cpu_arch[j].name); cpu_arch_flags = flags; cpu_arch_isa_flags = flags; } @@ -13436,15 +13420,7 @@ md_parse_option (int c, const char *arg) cpu_noarch[j].flags); if (!cpu_flags_equal (&flags, &cpu_arch_flags)) { - if (cpu_sub_arch_name) - { - char *name = cpu_sub_arch_name; - cpu_sub_arch_name = concat (arch, - (const char *) NULL); - free (name); - } - else - cpu_sub_arch_name = xstrdup (arch); + extend_cpu_sub_arch_name (arch); cpu_arch_flags = flags; cpu_arch_isa_flags = flags; } |