diff --git a/libgcc/libgcov-util.c b/libgcc/libgcov-util.c
index ba4b90a480dc279ce4ca8d1c0e2a362024a327ef..f443408c4ab7bf1a17e2eda6431fb5bd8f8b1ab6 100644
--- a/libgcc/libgcov-util.c
+++ b/libgcc/libgcov-util.c
@@ -211,8 +211,8 @@ tag_counters (unsigned tag, int length)
   gcc_assert (k_ctrs[tag_ix].num == 0);
   k_ctrs[tag_ix].num = n_counts;
 
-  k_ctrs[tag_ix].values = values = (gcov_type *) xcalloc (sizeof (gcov_type),
-							  n_counts);
+  k_ctrs[tag_ix].values = values = (gcov_type *) xcalloc (n_counts,
+							  sizeof (gcov_type));
   gcc_assert (values);
 
   if (length > 0)
@@ -526,7 +526,7 @@ topn_to_memory_representation (struct gcov_ctr_info *info)
       if (n > 0)
 	{
 	  struct gcov_kvp *tuples
-	    = (struct gcov_kvp *)xcalloc (sizeof (struct gcov_kvp), n);
+	    = (struct gcov_kvp *)xcalloc (n, sizeof (struct gcov_kvp));
 	  for (unsigned i = 0; i < n - 1; i++)
 	    tuples[i].next = &tuples[i + 1];
 	  for (unsigned i = 0; i < n; i++)