Browse Source

gcc: Add `#pragma starpu wait'.

* gcc-plugin/src/starpu.c (handle_pragma_wait): New function.
  (register_pragmas): Register `wait'.

* gcc-plugin/tests/scalar-tasks.c (main): Use `#pragma starpu wait'
  instead of `starpu_task_wait_for_all ()'.
Ludovic Courtès 14 years ago
parent
commit
0f9fd3362b
2 changed files with 14 additions and 1 deletions
  1. 13 0
      gcc-plugin/src/starpu.c
  2. 1 1
      gcc-plugin/tests/scalar-tasks.c

+ 13 - 0
gcc-plugin/src/starpu.c

@@ -192,10 +192,23 @@ handle_pragma_hello (struct cpp_reader *reader)
 }
 
 static void
+handle_pragma_wait (struct cpp_reader *reader)
+{
+  tree fndecl;
+
+  fndecl = lookup_name (get_identifier ("starpu_task_wait_for_all"));
+  gcc_assert (TREE_CODE (fndecl) == FUNCTION_DECL);
+
+  add_stmt (build_call_expr (fndecl, 0));
+}
+
+static void
 register_pragmas (void *gcc_data, void *user_data)
 {
   c_register_pragma (STARPU_PRAGMA_NAME_SPACE, "hello",
 		     handle_pragma_hello);
+  c_register_pragma (STARPU_PRAGMA_NAME_SPACE, "wait",
+		     handle_pragma_wait);
 }
 
 

+ 1 - 1
gcc-plugin/tests/scalar-tasks.c

@@ -62,7 +62,7 @@ main (int argc, char *argv[])
      EXPECTED.  */
   my_scalar_task (x, y);
 
-  starpu_task_wait_for_all ();
+#pragma starpu wait
 
   assert ((implementations_called & STARPU_CPU)
 	  || (implementations_called & STARPU_OPENCL));