aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2003-06-20 19:55:29 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2003-06-20 19:55:29 +0000
commitae4a71552f798cb0ea8112de417ade58cb50e168 (patch)
tree3fc7d3314decabfa9b7720c4f3e147202aa0e6c7
parent4739b00e528da80052c920997ad8addaa392e545 (diff)
downloadgcc-ae4a71552f798cb0ea8112de417ade58cb50e168.zip
gcc-ae4a71552f798cb0ea8112de417ade58cb50e168.tar.gz
gcc-ae4a71552f798cb0ea8112de417ade58cb50e168.tar.bz2
re PR c++/10888 (inlining failure for allocate in ~vector())
PR c++/10888 * tree-inline.c (expand_call_inline): Do not warn about failing to inline functions declared in system headers. * doc/invoke.texi (-Winline): Expand on documentation. PR c++/10888 * g++.dg/warn/Winline-3.C: New test. From-SVN: r68281
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/doc/invoke.texi9
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/warn/Winline-3.C10
-rw-r--r--gcc/tree-inline.c3
5 files changed, 33 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7954f06..3f40537 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2003-06-20 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/10888
+ * tree-inline.c (expand_call_inline): Do not warn about failing to
+ inline functions declared in system headers.
+ * doc/invoke.texi (-Winline): Expand on documentation.
+
2003-06-20 Richard Henderson <rth@redhat.com>
* config/alpha/alpha.c (alpha_file_start): Disable
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 5256e66..33b16e8 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -2811,6 +2811,15 @@ code is to provide behavior which is selectable at compile-time.
@item -Winline
@opindex Winline
Warn if a function can not be inlined and it was declared as inline.
+Even with this option, the compiler will not warn about failures to
+inline functions declared in system headers.
+
+The compiler uses a variety of heuristics to determine whether or not
+to inline a function. For example, the compiler takes into account
+the size of the function being inlined and the the amount of inlining
+that has already been done in the current function. Therefore,
+seemingly insignificant changes in the source program can cause the
+warnings produced by @option{-Winline} to appear or disappear.
@item -Wno-invalid-offsetof @r{(C++ only)}
@opindex Wno-invalid-offsetof
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 25dc0dc..a0b9777 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2003-06-20 Mark Mitchell <mark@codesourcery.com>
+ PR c++/10888
+ * g++.dg/warn/Winline-3.C: New test.
+
+2003-06-20 Mark Mitchell <mark@codesourcery.com>
+
* lib/target-supports.exp (check_alias_available): Make the test
program acceptable to the Solaris assembler.
diff --git a/gcc/testsuite/g++.dg/warn/Winline-3.C b/gcc/testsuite/g++.dg/warn/Winline-3.C
new file mode 100644
index 0000000..1c226d1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Winline-3.C
@@ -0,0 +1,10 @@
+// { dg-options "-Winline -O" }
+
+#include <vector>
+
+using namespace std;
+
+int main(void)
+{
+ vector<int> v(10);
+}
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index c0d3610..88bf4d9 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -1201,7 +1201,8 @@ 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) && !DID_INLINE_FUNC (fn))
+ if (warn_inline && DECL_INLINE (fn) && !DID_INLINE_FUNC (fn)
+ && !DECL_IN_SYSTEM_HEADER (fn))
{
warning_with_decl (fn, "inlining failed in call to `%s'");
warning ("called from here");