aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2003-06-17 19:00:16 -0400
committerJason Merrill <jason@gcc.gnu.org>2003-06-17 19:00:16 -0400
commit9da32fe151688a1790f3de95a6fd396d22a626dd (patch)
treeca8ddf6fa96e986b0118487b5e953bd63dcb87d8 /gcc
parentcb713a8d52e60134d85df14670a07feac505c86c (diff)
downloadgcc-9da32fe151688a1790f3de95a6fd396d22a626dd.zip
gcc-9da32fe151688a1790f3de95a6fd396d22a626dd.tar.gz
gcc-9da32fe151688a1790f3de95a6fd396d22a626dd.tar.bz2
re PR c++/10929 (-Winline warns about functions for which no definition is visible)
PR c++/10929 * tree-inline.c (expand_call_inline): Don't warn about failing to inline a function which was made inline by -finline-functions. * cp/decl.c (grokfndecl): Don't mark a function inline for -finline-functions if it isn't defined. From-SVN: r68122
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/decl.c2
-rw-r--r--gcc/testsuite/g++.dg/warn/Winline-2.C5
-rw-r--r--gcc/tree-inline.c2
5 files changed, 19 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e57272e..48c7c7c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2003-06-17 Jason Merrill <jason@redhat.com>
+
+ PR c++/10929
+ * tree-inline.c (expand_call_inline): Don't warn about failing to
+ inline a function which was made inline by -finline-functions.
+
2003-06-17 Kazu Hirata <kazu@cs.umass.edu>
* config/h8300/h8300-protos.h: Update to ISO C.
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 7e8bbc7..8c333fe 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2003-06-17 Jason Merrill <jason@redhat.com>
+
+ PR c++/10929
+ * decl.c (grokfndecl): Don't mark a function inline for
+ -finline-functions if it isn't defined.
+
2003-06-17 Mark Mitchell <mark@codesourcery.com>
PR c++/10712
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index d76133a..4ec5c31 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -8883,7 +8883,7 @@ grokfndecl (tree ctype,
the user explicitly asks us to, all functions. */
if (DECL_DECLARED_INLINE_P (decl))
DECL_INLINE (decl) = 1;
- if (flag_inline_trees == 2 && !DECL_INLINE (decl))
+ if (flag_inline_trees == 2 && !DECL_INLINE (decl) && funcdef_flag)
{
DID_INLINE_FUNC (decl) = 1;
DECL_INLINE (decl) = 1;
diff --git a/gcc/testsuite/g++.dg/warn/Winline-2.C b/gcc/testsuite/g++.dg/warn/Winline-2.C
new file mode 100644
index 0000000..69af343
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Winline-2.C
@@ -0,0 +1,5 @@
+// PR c++/10929
+// { dg-options "-Winline -O3" }
+
+int foo ();
+int bar () { return foo (); }
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index dd50ca1..c0d3610 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -1201,7 +1201,7 @@ expand_call_inline (tp, walk_subtrees, data)
|| !cgraph_global_info (fn)->inline_once)
&& !inlinable_function_p (fn, id, 0))
{
- if (warn_inline && DECL_INLINE (fn))
+ if (warn_inline && DECL_INLINE (fn) && !DID_INLINE_FUNC (fn))
{
warning_with_decl (fn, "inlining failed in call to `%s'");
warning ("called from here");