aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2018-11-09 14:01:19 +0100
committerMartin Liska <marxin@gcc.gnu.org>2018-11-09 13:01:19 +0000
commitff150bc478180c2814136df3edd976059157cc18 (patch)
tree500341e85f5fe485d0bbb545caaa03c87daa36ea /gcc
parent89939ff85a7c2ed0c1eb33e51d241f2a6dda0695 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/config/aarch64/aarch64.c32
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;