diff options
author | Martin Liska <mliska@suse.cz> | 2018-11-09 14:01:19 +0100 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2018-11-09 13:01:19 +0000 |
commit | ff150bc478180c2814136df3edd976059157cc18 (patch) | |
tree | 500341e85f5fe485d0bbb545caaa03c87daa36ea /gcc | |
parent | 89939ff85a7c2ed0c1eb33e51d241f2a6dda0695 (diff) | |
download | gcc-ff150bc478180c2814136df3edd976059157cc18.zip gcc-ff150bc478180c2814136df3edd976059157cc18.tar.gz gcc-ff150bc478180c2814136df3edd976059157cc18.tar.bz2 |
Remove extra memory allocation of strings.
2018-11-09 Martin Liska <mliska@suse.cz>
* config/aarch64/aarch64.c (aarch64_parse_arch): Do not copy
string to a stack buffer.
(aarch64_parse_cpu): Likewise.
(aarch64_parse_tune): Likewise.
From-SVN: r265966
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 32 |
2 files changed, 19 insertions, 20 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 693ac97..23accf3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2018-11-09 Martin Liska <mliska@suse.cz> + + * config/aarch64/aarch64.c (aarch64_parse_arch): Do not copy + string to a stack buffer. + (aarch64_parse_cpu): Likewise. + (aarch64_parse_tune): Likewise. + 2018-11-09 Richard Biener <rguenther@suse.de> PR tree-optimization/87953 diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index c82c7b6..815f824 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -10553,19 +10553,16 @@ static enum aarch64_parse_opt_result aarch64_parse_arch (const char *to_parse, const struct processor **res, unsigned long *isa_flags, std::string *invalid_extension) { - char *ext; + const char *ext; const struct processor *arch; - char *str = (char *) alloca (strlen (to_parse) + 1); size_t len; - strcpy (str, to_parse); - - ext = strchr (str, '+'); + ext = strchr (to_parse, '+'); if (ext != NULL) - len = ext - str; + len = ext - to_parse; else - len = strlen (str); + len = strlen (to_parse); if (len == 0) return AARCH64_PARSE_MISSING_ARG; @@ -10574,7 +10571,8 @@ aarch64_parse_arch (const char *to_parse, const struct processor **res, /* Loop through the list of supported ARCHes to find a match. */ for (arch = all_architectures; arch->name != NULL; arch++) { - if (strlen (arch->name) == len && strncmp (arch->name, str, len) == 0) + if (strlen (arch->name) == len + && strncmp (arch->name, to_parse, len) == 0) { unsigned long isa_temp = arch->flags; @@ -10610,19 +10608,16 @@ static enum aarch64_parse_opt_result aarch64_parse_cpu (const char *to_parse, const struct processor **res, unsigned long *isa_flags, std::string *invalid_extension) { - char *ext; + const char *ext; const struct processor *cpu; - char *str = (char *) alloca (strlen (to_parse) + 1); size_t len; - strcpy (str, to_parse); - - ext = strchr (str, '+'); + ext = strchr (to_parse, '+'); if (ext != NULL) - len = ext - str; + len = ext - to_parse; else - len = strlen (str); + len = strlen (to_parse); if (len == 0) return AARCH64_PARSE_MISSING_ARG; @@ -10631,7 +10626,7 @@ aarch64_parse_cpu (const char *to_parse, const struct processor **res, /* Loop through the list of supported CPUs to find a match. */ for (cpu = all_cores; cpu->name != NULL; cpu++) { - if (strlen (cpu->name) == len && strncmp (cpu->name, str, len) == 0) + if (strlen (cpu->name) == len && strncmp (cpu->name, to_parse, len) == 0) { unsigned long isa_temp = cpu->flags; @@ -10665,14 +10660,11 @@ static enum aarch64_parse_opt_result aarch64_parse_tune (const char *to_parse, const struct processor **res) { const struct processor *cpu; - char *str = (char *) alloca (strlen (to_parse) + 1); - - strcpy (str, to_parse); /* Loop through the list of supported CPUs to find a match. */ for (cpu = all_cores; cpu->name != NULL; cpu++) { - if (strcmp (cpu->name, str) == 0) + if (strcmp (cpu->name, to_parse) == 0) { *res = cpu; return AARCH64_PARSE_OK; |