diff mbox

[committed] Fix --enable-checking=valgrind reported FAIL on simd-clones-2.c (PR other/58712)

Message ID 20140204123350.GH12671@tucnak.redhat.com
State New
Headers show

Commit Message

Jakub Jelinek Feb. 4, 2014, 12:33 p.m. UTC
Hi!

We shouldn't copy the inbranch artificial argument.  Also,
if clone_info->inbranch, then inbranch_specified is necessarily true,
thus (i & 1) will be always 0 and in that case we still need room for the
extra argument.

Committed to trunk.

2014-02-04  Jakub Jelinek  <jakub@redhat.com>

	PR other/58712
	* omp-low.c (simd_clone_struct_copy): If from->inbranch
	is set, copy one less argument.
	(expand_simd_clones): Don't subtract clone_info->inbranch
	from simd_clone_struct_alloc argument.


	Jakub
diff mbox

Patch

--- gcc/omp-low.c.jj	2014-01-29 12:43:24.000000000 +0100
+++ gcc/omp-low.c	2014-02-03 17:46:40.667922617 +0100
@@ -10660,7 +10660,8 @@  simd_clone_struct_copy (struct cgraph_si
 			struct cgraph_simd_clone *from)
 {
   memcpy (to, from, (sizeof (struct cgraph_simd_clone)
-		     + from->nargs * sizeof (struct cgraph_simd_clone_arg)));
+		     + ((from->nargs - from->inbranch)
+			* sizeof (struct cgraph_simd_clone_arg))));
 }
 
 /* Return vector of parameter types of function FNDECL.  This uses
@@ -11694,7 +11695,6 @@  expand_simd_clones (struct cgraph_node *
 	  if (i != 0)
 	    {
 	      clone = simd_clone_struct_alloc (clone_info->nargs
-					       - clone_info->inbranch
 					       + ((i & 1) != 0));
 	      simd_clone_struct_copy (clone, clone_info);
 	      /* Undo changes targetm.simd_clone.compute_vecsize_and_simdlen