I did run into this when misspelling 'disable':

Currently (with one offload target configured)

$ gcc -foffload=disabled
gcc: error: GCC is not configured to support 'disabled' as offload target
gcc: note: valid offload targets are: amdgcn-amdhsa

or (without offload support)

$ gcc -foffload=disabled
gcc: error: GCC is not configured to support ‘disabled’ as offload target
gcc: note: no offloading targets configured


With the patch:

$ gcc -foffload=disabled
gcc: error: GCC is not configured to support 'disabled' as offload target
gcc: note: valid offload targets are: nvptx-none default disable; did you mean 
'disable'?

or

$ gcc -foffload=disabled
gcc: error: GCC is not configured to support ‘disabled’ as offload target
gcc: note: valid offload targets are: default disable; did you mean ‘disable’?

or without hint

$ gcc -foffload=x
gcc: error: GCC is not configured to support ‘x’ as offload target
gcc: note: valid offload targets are: default disable


OK for mainline?

Tobias
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 
München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas 
Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht 
München, HRB 106955
For -foffload= suggest also 'disable' and 'default' [PR103644]

gcc/ChangeLog:

	PR driver/103644
	* gcc.c (check_offload_target_name): Add 'default' and 'disable'
	to the candidate list.

diff --git a/gcc/gcc.c b/gcc/gcc.c
index 694c2573109..7eaa7c9d8dc 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -4017,6 +4017,8 @@ check_offload_target_name (const char *target, ptrdiff_t len)
       memcpy (cand, OFFLOAD_TARGETS, olen);
       for (c = strtok (cand, ","); c; c = strtok (NULL, ","))
 	candidates.safe_push (c);
+      candidates.safe_push ("default");
+      candidates.safe_push ("disable");
 
       char *target2 = XALLOCAVEC (char, len + 1);
       memcpy (target2, target, len);
@@ -4024,19 +4026,14 @@ check_offload_target_name (const char *target, ptrdiff_t len)
 
       error ("GCC is not configured to support %qs as offload target", target2);
 
-      if (candidates.is_empty ())
-	inform (UNKNOWN_LOCATION, "no offloading targets configured");
+      char *s;
+      const char *hint = candidates_list_and_hint (target2, s, candidates);
+      if (hint)
+	inform (UNKNOWN_LOCATION,
+		"valid offload targets are: %s; did you mean %qs?", s, hint);
       else
-	{
-	  char *s;
-	  const char *hint = candidates_list_and_hint (target2, s, candidates);
-	  if (hint)
-	    inform (UNKNOWN_LOCATION,
-		    "valid offload targets are: %s; did you mean %qs?", s, hint);
-	  else
-	    inform (UNKNOWN_LOCATION, "valid offload targets are: %s", s);
-	  XDELETEVEC (s);
-	}
+	inform (UNKNOWN_LOCATION, "valid offload targets are: %s", s);
+      XDELETEVEC (s);
       return false;
     }
   return true;

Reply via email to