Commit ff150bc4 by Martin Liska Committed by Martin Liska

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
parent 89939ff8
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> 2018-11-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/87953 PR tree-optimization/87953
...@@ -10553,19 +10553,16 @@ static enum aarch64_parse_opt_result ...@@ -10553,19 +10553,16 @@ static enum aarch64_parse_opt_result
aarch64_parse_arch (const char *to_parse, const struct processor **res, aarch64_parse_arch (const char *to_parse, const struct processor **res,
unsigned long *isa_flags, std::string *invalid_extension) unsigned long *isa_flags, std::string *invalid_extension)
{ {
char *ext; const char *ext;
const struct processor *arch; const struct processor *arch;
char *str = (char *) alloca (strlen (to_parse) + 1);
size_t len; size_t len;
strcpy (str, to_parse); ext = strchr (to_parse, '+');
ext = strchr (str, '+');
if (ext != NULL) if (ext != NULL)
len = ext - str; len = ext - to_parse;
else else
len = strlen (str); len = strlen (to_parse);
if (len == 0) if (len == 0)
return AARCH64_PARSE_MISSING_ARG; return AARCH64_PARSE_MISSING_ARG;
...@@ -10574,7 +10571,8 @@ aarch64_parse_arch (const char *to_parse, const struct processor **res, ...@@ -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. */ /* Loop through the list of supported ARCHes to find a match. */
for (arch = all_architectures; arch->name != NULL; arch++) 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; unsigned long isa_temp = arch->flags;
...@@ -10610,19 +10608,16 @@ static enum aarch64_parse_opt_result ...@@ -10610,19 +10608,16 @@ static enum aarch64_parse_opt_result
aarch64_parse_cpu (const char *to_parse, const struct processor **res, aarch64_parse_cpu (const char *to_parse, const struct processor **res,
unsigned long *isa_flags, std::string *invalid_extension) unsigned long *isa_flags, std::string *invalid_extension)
{ {
char *ext; const char *ext;
const struct processor *cpu; const struct processor *cpu;
char *str = (char *) alloca (strlen (to_parse) + 1);
size_t len; size_t len;
strcpy (str, to_parse); ext = strchr (to_parse, '+');
ext = strchr (str, '+');
if (ext != NULL) if (ext != NULL)
len = ext - str; len = ext - to_parse;
else else
len = strlen (str); len = strlen (to_parse);
if (len == 0) if (len == 0)
return AARCH64_PARSE_MISSING_ARG; return AARCH64_PARSE_MISSING_ARG;
...@@ -10631,7 +10626,7 @@ aarch64_parse_cpu (const char *to_parse, const struct processor **res, ...@@ -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. */ /* Loop through the list of supported CPUs to find a match. */
for (cpu = all_cores; cpu->name != NULL; cpu++) 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; unsigned long isa_temp = cpu->flags;
...@@ -10665,14 +10660,11 @@ static enum aarch64_parse_opt_result ...@@ -10665,14 +10660,11 @@ static enum aarch64_parse_opt_result
aarch64_parse_tune (const char *to_parse, const struct processor **res) aarch64_parse_tune (const char *to_parse, const struct processor **res)
{ {
const struct processor *cpu; 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. */ /* Loop through the list of supported CPUs to find a match. */
for (cpu = all_cores; cpu->name != NULL; cpu++) for (cpu = all_cores; cpu->name != NULL; cpu++)
{ {
if (strcmp (cpu->name, str) == 0) if (strcmp (cpu->name, to_parse) == 0)
{ {
*res = cpu; *res = cpu;
return AARCH64_PARSE_OK; return AARCH64_PARSE_OK;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment