ipa/63470 add testcase
authorMarkus Trippelsdorf <markus@trippelsdorf.de>
Mon, 12 Jan 2015 07:48:50 +0000 (07:48 +0000)
committerMarkus Trippelsdorf <trippels@gcc.gnu.org>
Mon, 12 Jan 2015 07:48:50 +0000 (07:48 +0000)
2015-01-11  Markus Trippelsdorf  <markus@trippelsdorf.de>

PR ipa/63470
* ipa/pr63470.C: New testcase.

From-SVN: r219445

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/ipa/pr63470.C [new file with mode: 0644]

index b3b6b59091d2f8950823206f38a2350e85dac14c..d673e12f8880f61ecdba3ca9ffd7fe754f89151b 100644 (file)
@@ -1,3 +1,8 @@
+2015-01-11  Markus Trippelsdorf  <markus@trippelsdorf.de>
+
+       PR ipa/63470
+       * ipa/pr63470.C: New testcase.
+
 2015-01-11  Janus Weil  <janus@gcc.gnu.org>
 
        PR fortran/63733
diff --git a/gcc/testsuite/g++.dg/ipa/pr63470.C b/gcc/testsuite/g++.dg/ipa/pr63470.C
new file mode 100644 (file)
index 0000000..e6fa73b
--- /dev/null
@@ -0,0 +1,54 @@
+/* PR ipa/63470.C */
+/* { dg-do compile } */
+/* { dg-options "-O2 -finline-functions" } */
+
+class A
+{
+public:
+  virtual bool m_fn1 ();
+  virtual const char **m_fn2 (int);
+  virtual int m_fn3 ();
+};
+class FTjackSupport : A
+{
+  ~FTjackSupport ();
+  bool m_fn1 ();
+  bool m_fn4 ();
+  const char **
+  m_fn2 (int)
+  {
+  }
+  int _inited;
+  int *_jackClient;
+  int _activePathCount;
+}
+
+* a;
+void fn1 (...);
+void fn2 (void *);
+int fn3 (int *);
+FTjackSupport::~FTjackSupport () { m_fn4 (); }
+
+bool
+FTjackSupport::m_fn1 ()
+{
+  if (!_jackClient)
+    return 0;
+  for (int i=0; _activePathCount; ++i)
+    if (m_fn2 (i))
+      fn2 (a);
+  if (m_fn3 ())
+    fn2 (a);
+  if (fn3 (_jackClient))
+    fn1 (0);
+}
+
+bool
+FTjackSupport::m_fn4 ()
+{
+  if (_inited && _jackClient)
+    {
+      m_fn1 ();
+      return 0;
+    }
+}