2011-05-23 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 23 May 2011 14:36:28 +0000 (14:36 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 23 May 2011 14:36:28 +0000 (14:36 +0000)
PR tree-optimization/40874
* g++.dg/tree-ssa/pr40874.C: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@174068 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/tree-ssa/pr40874.C [new file with mode: 0644]

index e647cb5..0fd397c 100644 (file)
@@ -1,5 +1,10 @@
 2011-05-23  Richard Guenther  <rguenther@suse.de>
 
+       PR tree-optimization/40874
+       * g++.dg/tree-ssa/pr40874.C: New testcase.
+
+2011-05-23  Richard Guenther  <rguenther@suse.de>
+
        PR tree-optimization/49115
        * g++.dg/torture/pr49115.C: New testcase.
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr40874.C b/gcc/testsuite/g++.dg/tree-ssa/pr40874.C
new file mode 100644 (file)
index 0000000..d227ff9
--- /dev/null
@@ -0,0 +1,25 @@
+// { dg-do compile }
+// { dg-options "-O -fdump-tree-optimized" }
+
+struct pf
+{
+  inline pf(int(*x)(int)) : x(x) {}
+
+  inline int operator()(int a) const
+    {
+      return x(a);
+    }
+
+  int (*x)(int);
+};
+
+inline int g(int x) { return x/x - 1; }
+
+int main(int argc, char* argv[])
+{
+  pf f(g);
+  return f(3);
+}
+
+// { dg-final { scan-tree-dump "return 0" "optimized" } }
+// { dg-final { cleanup-tree-dump "optimized" } }