re PR middle-end/78333 (always-inline gnu-inline functions break -finstrument-functions)
authorRichard Biener <rguenther@suse.de>
Wed, 16 Nov 2016 12:55:02 +0000 (12:55 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 16 Nov 2016 12:55:02 +0000 (12:55 +0000)
2016-11-16  Richard Biener  <rguenther@suse.de>

PR middle-end/78333
* gimplify.c (gimplify_function_tree): Do not instrument
GNU extern inline functions.

* gcc.dg/pr78333.c: New testcase.

From-SVN: r242487

gcc/ChangeLog
gcc/gimplify.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr78333.c [new file with mode: 0644]

index 08f0a7c99ecdeb39b69db532b7a0577fb74fc13d..a49e02492362fe0caafd25f5702c253a9495b962 100644 (file)
@@ -1,3 +1,9 @@
+2016-11-16  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/78333
+       * gimplify.c (gimplify_function_tree): Do not instrument
+       GNU extern inline functions.
+
 2016-11-16  Martin Liska  <mliska@suse.cz>
 
        PR sanitizer/78270
index c23888b4624eb7912a0c6372107fe5c8c56e3016..8611060aea677215f73f26cc36e93541418486ec 100644 (file)
@@ -12547,6 +12547,10 @@ gimplify_function_tree (tree fndecl)
   /* ??? Add some way to ignore exceptions for this TFE.  */
   if (flag_instrument_function_entry_exit
       && !DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (fndecl)
+      /* Do not instrument extern inline functions.  */
+      && !(DECL_DECLARED_INLINE_P (fndecl)
+          && DECL_EXTERNAL (fndecl)
+          && DECL_DISREGARD_INLINE_LIMITS (fndecl))
       && !flag_instrument_functions_exclude_p (fndecl))
     {
       tree x;
index b964464152e501c98cf38c1e37bfbefac205e22c..59a707f0dbcd236ffe94c6a6f2d52f929ee348c3 100644 (file)
@@ -1,3 +1,8 @@
+2016-11-16  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/78333
+       * gcc.dg/pr78333.c: New testcase.
+
 2016-11-16  Martin Liska  <mliska@suse.cz>
 
        PR sanitizer/78270
diff --git a/gcc/testsuite/gcc.dg/pr78333.c b/gcc/testsuite/gcc.dg/pr78333.c
new file mode 100644 (file)
index 0000000..fd3669c
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-do link } */
+/* { dg-options "-finstrument-functions" } */
+
+extern inline __attribute__((gnu_inline, always_inline)) int foo () { }
+int main()
+{
+  foo ();
+  return 0;
+}