Build the test case in the patch file with -finstrument-functions, the
link will fail with unsat. The problem is gcc instruments the
artificial wrappers that will won't be emitted. The patch fixes the
problem. Bootstrap and tested on x86-64/linux.

Ok for mainline?

thanks,

David
Index: gimplify.c
===================================================================
--- gimplify.c	(revision 182083)
+++ gimplify.c	(working copy)
@@ -8048,6 +8048,12 @@ flag_instrument_functions_exclude_p (tre
 	  return true;
     }
 
+    /* Avoid instrumenting wrapper functions to builtins.  */
+
+    if (DECL_DISREGARD_INLINE_LIMITS (fndecl)
+        && lookup_attribute ("always_inline", DECL_ATTRIBUTES (fndecl)))
+      return true;
+
   return false;
 }
 
Index: testsuite/gcc.target/i386/instrument-func.c
===================================================================
--- testsuite/gcc.target/i386/instrument-func.c	(revision 0)
+++ testsuite/gcc.target/i386/instrument-func.c	(revision 0)
@@ -0,0 +1,18 @@
+/* { dg-do run } */
+/* { dg-require-effective-target sse } */
+/* { dg-options "-O2  -msse -finstrument-functions" } */
+
+#include <xmmintrin.h>
+
+__attribute__((noinline)) __m128 foo( float *row, int x)
+{
+  __m128 vals = _mm_loadu_ps(row + x);
+  return vals;
+}
+
+int main()
+{
+  float f[10];
+  foo(f, 5);
+  return 0;
+}

Attachment: cg1
Description: Binary data

Attachment: cg2
Description: Binary data

Reply via email to