summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.warn/inline.C
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/g++.old-deja/g++.warn/inline.C
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.warn/inline.C')
-rw-r--r--gcc/testsuite/g++.old-deja/g++.warn/inline.C69
1 files changed, 69 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.warn/inline.C b/gcc/testsuite/g++.old-deja/g++.warn/inline.C
new file mode 100644
index 000000000..51fbabdc2
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.warn/inline.C
@@ -0,0 +1,69 @@
+// { dg-do assemble }
+// { dg-options "-ansi -pedantic-errors -Winline -O1" }
+
+// Copyright (C) 2000 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 9 Mar 2000 <nathan@codesourcery.com>
+
+// derived from a bug report by Benjamin Kosnik <bkoz@cygnus.com>
+
+// __FUNCTION__ was erroneously causing us to issue a `cannot inline'
+// diagnostic, even though we'd (a) inlined it, (b) been forced to issue an
+// out of line body by taking it's address, (c) not used __FUNCTION__.
+
+inline void wibble ()
+{}
+
+inline void wobble ()
+{} // { dg-bogus "" } cannot inline
+
+void bar (void (*)());
+
+void bar1 ()
+{
+ wibble (); // can be inlined
+ void (*ptr) () = wobble; // force out of line issue
+
+ bar (ptr); // make sure we make use of it
+}
+
+struct B
+{
+ void mwibble ()
+ {}
+ void mwobble ()
+ {} // { dg-bogus "" } cannot inline
+
+ static void swibble ()
+ {}
+ static void swobble ()
+ {} // { dg-bogus "" } cannot inline
+};
+
+void bar (void (B::*)());
+
+void bar2 ()
+{
+ B::swibble (); // can be inlined
+ void (*ptr) () = &B::swobble; // force out of line issue
+
+ bar (ptr); // make sure we make use of it
+}
+
+void bar3 (B *b)
+{
+ b->mwibble (); // can be inlined
+ void (B::*ptr) () = &B::mwobble; // force out of line issue
+
+ bar (ptr); // make sure we make use of it
+}
+
+struct C
+{
+ virtual void vwobble ()
+ {} // { dg-bogus "" } cannot inline
+};
+
+void bar4 ()
+{
+ C c; // force issue of C's vtable etc
+}