diff options
author | Ilya Tocar <ilya.tocar@intel.com> | 2014-11-25 13:56:03 +0000 |
---|---|---|
committer | Ilya Tocar <tocarip@gcc.gnu.org> | 2014-11-25 16:56:03 +0300 |
commit | 191ec64036b11c0b56aa0d2a387e936286103d2e (patch) | |
tree | 9ecd455af2d5a192d1d2e62f558b237a9f88e62d /gcc | |
parent | a959b33fc4a5b4dffc55d5c7f105dc1096a75b42 (diff) | |
download | gcc-191ec64036b11c0b56aa0d2a387e936286103d2e.zip gcc-191ec64036b11c0b56aa0d2a387e936286103d2e.tar.gz gcc-191ec64036b11c0b56aa0d2a387e936286103d2e.tar.bz2 |
Remove unnecessary calls to strchr.
gcc/
* gcc.c (handle_foffload_option): Remove unnecessary calls to strchr,
strlen, strncpy.
* lto-wrapper.c (append_offload_options): Likewise.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r218044
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/gcc.c | 24 | ||||
-rw-r--r-- | gcc/lto-wrapper.c | 2 |
3 files changed, 21 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bed7cb8..a8b9f75 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2014-11-25 Ilya Tocar <ilya.tocar@intel.com> + Jakub Jelinek <jakub@redhat.com> + + * gcc.c (handle_foffload_option): Remove unnecessary calls to strchr, + strlen, strncpy. + * lto-wrapper.c (append_offload_options): Likewise. + 2014-11-25 Eric Botcazou <ebotcazou@adacore.com> * config/rs6000/rs6000.c (rs6000_call_aix): For the AIX ABI, do not @@ -3384,11 +3384,11 @@ handle_foffload_option (const char *arg) { next = strchr (cur, ','); if (next == NULL) - next = strchr (cur, '\0'); + next = end; next = (next > end) ? end : next; target = XNEWVEC (char, next - cur + 1); - strncpy (target, cur, next - cur); + memcpy (target, cur, next - cur); target[next - cur] = '\0'; /* If 'disable' is passed to the option, stop parsing the option and clean @@ -3408,8 +3408,7 @@ handle_foffload_option (const char *arg) if (n == NULL) n = strchr (c, '\0'); - if (strlen (target) == (size_t) (n - c) - && strncmp (target, c, n - c) == 0) + if (next - cur == n - c && strncmp (target, c, n - c) == 0) break; c = *n ? n + 1 : NULL; @@ -3420,7 +3419,10 @@ handle_foffload_option (const char *arg) target); if (!offload_targets) - offload_targets = xstrdup (target); + { + offload_targets = target; + target = NULL; + } else { /* Check that the target hasn't already presented in the list. */ @@ -3431,8 +3433,7 @@ handle_foffload_option (const char *arg) if (n == NULL) n = strchr (c, '\0'); - if (strlen (target) == (size_t) (n - c) - && strncmp (c, target, n - c) == 0) + if (next - cur == n - c && strncmp (c, target, n - c) == 0) break; c = n + 1; @@ -3442,12 +3443,13 @@ handle_foffload_option (const char *arg) /* If duplicate is not found, append the target to the list. */ if (c > n) { + size_t offload_targets_len = strlen (offload_targets); offload_targets = XRESIZEVEC (char, offload_targets, - strlen (offload_targets) + strlen (target) + 2); - if (strlen (offload_targets) != 0) - strcat (offload_targets, ":"); - strcat (offload_targets, target); + offload_targets_len + next - cur + 2); + if (offload_targets_len) + offload_targets[offload_targets_len++] = ':'; + memcpy (offload_targets + offload_targets_len, target, next - cur); } } diff --git a/gcc/lto-wrapper.c b/gcc/lto-wrapper.c index 6b41782..9a540b4 100644 --- a/gcc/lto-wrapper.c +++ b/gcc/lto-wrapper.c @@ -587,7 +587,7 @@ append_offload_options (obstack *argv_obstack, const char *target, { next = strchr (cur, ','); if (next == NULL) - next = strchr (cur, '\0'); + next = opts; next = (next > opts) ? opts : next; if (strlen (target) == (size_t) (next - cur) |