public inbox for gcc-cvs@sourceware.org help / color / mirror / Atom feed
From: Tobias Burnus <burnus@gcc.gnu.org> To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-1928] gcc.c's check_offload_target_name: Fixes to inform hints Date: Wed, 30 Jun 2021 11:19:03 +0000 (GMT) [thread overview] Message-ID: <20210630111903.309FD385AC33@sourceware.org> (raw) https://gcc.gnu.org/g:a3ce7d75dd9c0308b8565669f31127436cb2ba9f commit r12-1928-ga3ce7d75dd9c0308b8565669f31127436cb2ba9f Author: Tobias Burnus <tobias@codesourcery.com> Date: Wed Jun 30 13:17:54 2021 +0200 gcc.c's check_offload_target_name: Fixes to inform hints gcc/ChangeLog: * gcc.c (close_at_file, execute): Replace alloca by XALLOCAVEC. (check_offload_target_name): Fix splitting OFFLOAD_TARGETS into a candidate list; better inform no offload target is configured and fix hint extraction when passed target is not '\0' at [len]. * common.opt (foffload): Add tailing '.'. (foffload-options): Likewise; fix flag name in the help string. Diff: --- gcc/common.opt | 4 ++-- gcc/gcc.c | 42 ++++++++++++++++++++---------------------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/gcc/common.opt b/gcc/common.opt index eaee74c580a..2f5ff9f02e9 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -2104,11 +2104,11 @@ Support synchronous non-call exceptions. ; -foffload=<targets>=<options> is supported for backward compatibility foffload= Driver Joined MissingArgError(targets missing after %qs) --foffload=<targets> Specify offloading targets +-foffload=<targets> Specify offloading targets. foffload-options= Common Driver Joined MissingArgError(options or targets=options missing after %qs) --foffload=<targets>=<options> Specify options for the offloading targets +-foffload-options=<targets>=<options> Specify options for the offloading targets. foffload-abi= Common Joined RejectNegative Enum(offload_abi) Var(flag_offload_abi) Init(OFFLOAD_ABI_UNSET) diff --git a/gcc/gcc.c b/gcc/gcc.c index 9baa7d67c76..f802148e567 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -2242,7 +2242,7 @@ close_at_file (void) if (n_args == 0) return; - char **argv = (char **) alloca (sizeof (char *) * (n_args + 1)); + char **argv = XALLOCAVEC (char *, n_args + 1); char *temp_file = make_at_file (); char *at_argument = concat ("@", temp_file, NULL); FILE *f = fopen (temp_file, "w"); @@ -3251,7 +3251,7 @@ execute (void) n_commands++; /* Get storage for each command. */ - commands = (struct command *) alloca (n_commands * sizeof (struct command)); + commands = XALLOCAVEC (struct command, n_commands); /* Split argbuf into its separate piped processes, and record info about each one. @@ -3430,13 +3430,13 @@ execute (void) struct pex_time *times = NULL; int ret_code = 0; - statuses = (int *) alloca (n_commands * sizeof (int)); + statuses = XALLOCAVEC (int, n_commands); if (!pex_get_status (pex, n_commands, statuses)) fatal_error (input_location, "failed to get exit status: %m"); if (report_times || report_times_to_file) { - times = (struct pex_time *) alloca (n_commands * sizeof (struct pex_time)); + times = XALLOCAVEC (struct pex_time, n_commands); if (!pex_get_times (pex, n_commands, times)) fatal_error (input_location, "failed to get process times: %m"); } @@ -3997,24 +3997,22 @@ check_offload_target_name (const char *target, ptrdiff_t len) { char *s; auto_vec<const char*> candidates; - char *cand = (char *) alloca (strlen (OFFLOAD_TARGETS) + 1); - c = OFFLOAD_TARGETS; - while (c) - { - n = strchr (c, ','); - if (n == NULL) - n = strchr (c, '\0'); - if (n - c == 0) - break; - strncpy (cand, c, n - c); - cand[n - c] = '\0'; - candidates.safe_push (cand); - c = *n ? n + 1 : NULL; - } - error ("GCC is not configured to support %q.*s as offload target", - (int) len, target); - const char *hint = candidates_list_and_hint (target, s, candidates); - if (hint) + size_t olen = strlen (OFFLOAD_TARGETS) + 1; + char *cand = XALLOCAVEC (char, olen); + memcpy (cand, OFFLOAD_TARGETS, olen); + for (c = strtok (cand, ","); c; c = strtok (NULL, ",")) + candidates.safe_push (c); + + char *target2 = XALLOCAVEC (char, len + 1); + memcpy (target2, target, len); + target2[len] = '\0'; + + error ("GCC is not configured to support %qs as offload target", target2); + + const char *hint = candidates_list_and_hint (target2, s, candidates); + if (candidates.is_empty ()) + inform (UNKNOWN_LOCATION, "no offloading targets configured"); + else if (hint) inform (UNKNOWN_LOCATION, "valid offload targets are: %s; did you mean %qs?", s, hint); else
reply other threads:[~2021-06-30 11:19 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210630111903.309FD385AC33@sourceware.org \ --to=burnus@gcc.gnu.org \ --cc=gcc-cvs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).