From: Giovanni Bajo Date: Thu, 7 Oct 2004 08:36:28 +0000 (+0000) Subject: re PR c++/17115 (-Winline does not respect __attribute__((__noinline__))) X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=09ebcffa1928d6373895c99e3c534f74f3cd126e;p=platform%2Fupstream%2Fgcc.git re PR c++/17115 (-Winline does not respect __attribute__((__noinline__))) PR c++/17115 * tree-inline.c (expand_call_inline): Do not warn for functions marked with attribute noinline. PR c++/17115 * g++.dg/warn/Winline-4.C: New test. From-SVN: r88678 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b00fad9..7ac6b4a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-10-07 Giovanni Bajo + + PR c++/17115 + * tree-inline.c (expand_call_inline): Do not warn for functions + marked with attribute noinline. + 2004-10-07 Eric Botcazou PR target/17862 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4858269..1087adb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-10-07 Giovanni Bajo + + PR c++/17115 + * g++.dg/warn/Winline-4.C: New test. + 2004-10-07 Christian Ehrhardt * gcc.c-torture/compile/20041007-1.c: New test. diff --git a/gcc/testsuite/g++.dg/warn/Winline-4.C b/gcc/testsuite/g++.dg/warn/Winline-4.C new file mode 100644 index 0000000..188ab5a --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Winline-4.C @@ -0,0 +1,17 @@ +// { dg-do compile } +// { dg-options "-O2 -Winline" } +// Origin: +// PR 17115: We should not emit -Winline warning for functions marked with +// noinline + +struct Foo { + __attribute__((noinline)) int a(int r) { return r & 1; } + virtual __attribute__((noinline)) int b(int r) { return r & 1; } + static __attribute__((noinline)) int c(int r) { return r & 1; } +}; + +int bar(int r) { + Foo f; + int k = 1; k &= f.a(r); k &= f.b(r); k &= f.a(r); + return k; +} diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 38fa455..0583eb4 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -1475,7 +1475,8 @@ expand_call_inline (tree *tp, int *walk_subtrees, void *data) } else if (warn_inline && DECL_DECLARED_INLINE_P (fn) && !DECL_IN_SYSTEM_HEADER (fn) - && strlen (reason)) + && strlen (reason) + && !lookup_attribute ("noinline", DECL_ATTRIBUTES (fn))) { warning ("%Jinlining failed in call to '%F': %s", fn, fn, reason); warning ("called from here");