Преглед на файлове

src/datawizard/malloc.c: fix condition branches for starpu_malloc_flags and starpu_free_flags

Nathalie Furmento преди 12 години
родител
ревизия
0eb91e33fe
променени са 1 файла, в които са добавени 17 реда и са изтрити 14 реда
  1. 17 14
      src/datawizard/malloc.c

+ 17 - 14
src/datawizard/malloc.c

@@ -117,6 +117,7 @@ int starpu_malloc_flags(void **A, size_t dim, int flags)
 			cures = cudaHostAlloc(A, dim, cudaHostAllocPortable);
 			if (STARPU_UNLIKELY(cures))
 				STARPU_CUDA_REPORT_ERROR(cures);
+			goto end;
 #else
 			int push_res;
 
@@ -141,6 +142,7 @@ int starpu_malloc_flags(void **A, size_t dim, int flags)
 
 			push_res = _starpu_task_submit_internally(task);
 			STARPU_ASSERT(push_res != -ENODEV);
+			goto end;
 #endif /* HAVE_CUDA_MEMCPY_PEER */
 #endif /* STARPU_USE_CUDA */
 		}
@@ -169,22 +171,22 @@ int starpu_malloc_flags(void **A, size_t dim, int flags)
 //
 //			push_res = _starpu_task_submit_internally(task);
 //			STARPU_ASSERT(push_res != -ENODEV);
+//			goto end;
 //#endif /* STARPU_USE_OPENCL */
 //		}
 	}
-        else
 #endif /* STARPU_SIMGRID */
-	{
+
 #ifdef STARPU_HAVE_POSIX_MEMALIGN
-		if (_malloc_align != sizeof(void*))
+	if (_malloc_align != sizeof(void*))
+	{
+		if (posix_memalign(A, _malloc_align, dim))
 		{
-			if (posix_memalign(A, _malloc_align, dim))
-			{
-				ret = -ENOMEM;
-				*A = NULL;
-			}
+			ret = -ENOMEM;
+			*A = NULL;
 		}
-		else
+	}
+	else
 #elif defined(STARPU_HAVE_MEMALIGN)
 		if (_malloc_align != sizeof(void*))
 		{
@@ -195,8 +197,8 @@ int starpu_malloc_flags(void **A, size_t dim, int flags)
 		{
 			*A = malloc(dim);
 		}
-	}
 
+end:
 	if (ret == 0)
 	{
 		STARPU_ASSERT(*A);
@@ -270,6 +272,7 @@ int starpu_free_flags(void *A, size_t dim, int flags)
 				cudaError_t err = cudaFreeHost(A);
 				if (STARPU_UNLIKELY(err))
 					STARPU_CUDA_REPORT_ERROR(err);
+				return 0;
 #ifndef HAVE_CUDA_MEMCPY_PEER
 			}
 			else
@@ -290,6 +293,7 @@ int starpu_free_flags(void *A, size_t dim, int flags)
 
 				push_res = _starpu_task_submit_internally(task);
 				STARPU_ASSERT(push_res != -ENODEV);
+				return 0;
 			}
 #endif /* HAVE_CUDA_MEMCPY_PEER */
 #endif /* STARPU_USE_CUDA */
@@ -313,14 +317,13 @@ int starpu_free_flags(void *A, size_t dim, int flags)
 //
 //		push_res = starpu_task_submit(task);
 //		STARPU_ASSERT(push_res != -ENODEV);
-//#endif
+//		return 0;
 //	}
-	} else
+//#endif
 #endif /* STARPU_SIMGRID */
-	{
-		free(A);
 	}
 
+	free(A);
 	return 0;
 }