diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 08f0a7c99ecdeb39b69db532b7a0577fb74fc13d..a49e02492362fe0caafd25f5702c253a9495b962 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index c23888b4624eb7912a0c6372107fe5c8c56e3016..8611060aea677215f73f26cc36e93541418486ec 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -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;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b964464152e501c98cf38c1e37bfbefac205e22c..59a707f0dbcd236ffe94c6a6f2d52f929ee348c3 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000000000000000000000000000000000000..fd3669ce92581f02671bac3b91395e2a72459657
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr78333.c
@@ -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;
+}