aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2014-10-03 20:14:48 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2014-10-03 20:14:48 +0000
commit6bc8a1261f5523c515ff7071ec6c188d99aa24ef (patch)
tree53ff74b8ed651e2ed44ce6588079d662179d003d /gcc
parent0ccaaab0e31a3dd406dffb70f6e311b46e99ae6c (diff)
downloadgcc-6bc8a1261f5523c515ff7071ec6c188d99aa24ef.zip
gcc-6bc8a1261f5523c515ff7071ec6c188d99aa24ef.tar.gz
gcc-6bc8a1261f5523c515ff7071ec6c188d99aa24ef.tar.bz2
re PR c/63453 (Bogus warning for gnu_inline functions)
PR c/63453 * c-decl.c (pop_scope): Don't warn about "inline function declared but never defined" for functions marked with gnu_inline attribute. * gcc.dg/pr63453.c: New test. From-SVN: r215874
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c/ChangeLog6
-rw-r--r--gcc/c/c-decl.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr63453.c8
4 files changed, 21 insertions, 1 deletions
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index cb69773..519aad0 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,9 @@
+2014-10-03 Marek Polacek <polacek@redhat.com>
+
+ PR c/63453
+ * c-decl.c (pop_scope): Don't warn about "inline function declared
+ but never defined" for functions marked with gnu_inline attribute.
+
2014-09-25 Jakub Jelinek <jakub@redhat.com>
PR c++/63249
diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c
index b4995a6..ce5a8de 100644
--- a/gcc/c/c-decl.c
+++ b/gcc/c/c-decl.c
@@ -1177,7 +1177,8 @@ pop_scope (void)
/* C99 6.7.4p6: "a function with external linkage... declared
with an inline function specifier ... shall also be defined
in the same translation unit." */
- if (!flag_gnu89_inline)
+ if (!flag_gnu89_inline
+ && !lookup_attribute ("gnu_inline", DECL_ATTRIBUTES (p)))
pedwarn (input_location, 0,
"inline function %q+D declared but never defined", p);
DECL_EXTERNAL (p) = 1;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 4c4c604..b8611ff 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-10-03 Marek Polacek <polacek@redhat.com>
+
+ PR c/63453
+ * gcc.dg/pr63453.c: New test.
+
2014-10-03 Marc Glisse <marc.glisse@inria.fr>
PR c++/54427
diff --git a/gcc/testsuite/gcc.dg/pr63453.c b/gcc/testsuite/gcc.dg/pr63453.c
new file mode 100644
index 0000000..e6337aa
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr63453.c
@@ -0,0 +1,8 @@
+/* PR c/63453 */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu11" } */
+
+inline int fn1 (void); /* { dg-warning "declared but never defined" } */
+extern inline int fn2 (void); /* { dg-warning "declared but never defined" } */
+inline int __attribute__ ((gnu_inline)) fn3 (void);
+extern inline int __attribute__ ((gnu_inline)) fn4 (void);