aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/gimplify.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr78333.c9
4 files changed, 24 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 08f0a7c..a49e024 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 c23888b..8611060 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 b964464..59a707f 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 0000000..fd3669c
--- /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;
+}