瀏覽代碼

gcc: Get rid of unused variable warnings in `#pragma starpu register'.

* gcc-plugin/src/starpu.c (read_pragma_pointer_variable): Mark VAR as
  used and read on success.
  (handle_pragma_register): Likewise for COUNT_ARG.

* gcc-plugin/tests/register-errors.c (main): Add test for unused
  variable warnings.
Ludovic Courtès 14 年之前
父節點
當前提交
b22b225f83
共有 2 個文件被更改,包括 12 次插入1 次删除
  1. 8 1
      gcc-plugin/src/starpu.c
  2. 4 0
      gcc-plugin/tests/register-errors.c

+ 8 - 1
gcc-plugin/src/starpu.c

@@ -381,7 +381,11 @@ read_pragma_pointer_variable (const char *pragma, location_t loc)
 	       && TREE_CODE (TREE_TYPE (decl)) != ARRAY_TYPE)
 	error_at (loc, "%qE is neither a pointer nor an array", var_name);
       else
-	var = decl;
+	{
+	  var = decl;
+	  TREE_USED (var) = true;
+	  DECL_READ_P (var) = true;
+	}
     }
 
   return var;
@@ -462,6 +466,9 @@ handle_pragma_register (struct cpp_reader *reader)
 	      error_at (loc, "integer expected");
 	      return;
 	    }
+
+	  TREE_USED (count_arg) = true;
+	  DECL_READ_P (count_arg) = true;
 	}
       else if (TREE_CODE (token) != INTEGER_CST)
 	error_at (loc, "integer expected");

+ 4 - 0
gcc-plugin/tests/register-errors.c

@@ -40,5 +40,9 @@ main (int argc, char *argv[])
 
 #pragma starpu register argc /* (error "neither a pointer nor an array") */
 
+  char **p = argv;
+  size_t ps = argc;
+#pragma starpu register p ps  /* No unused variable warning, please! */
+
   return EXIT_SUCCESS;
 }