diff --git a/gcc/testsuite/treelang/ChangeLog b/gcc/testsuite/treelang/ChangeLog
index 878f5413838c7817c4d1ad126121e56eb0d65ce4..db4d022deb6cf8617aa8b77ff6c793f4d9d57133 100644
--- a/gcc/testsuite/treelang/ChangeLog
+++ b/gcc/testsuite/treelang/ChangeLog
@@ -1,3 +1,7 @@
+2005-02-26  James A. Morrison  <phython@gcc.gnu.org>
+
+	* compile/extrafunc.tree, compile/extravar.tree: New tests.
+
 2005-02-26  James A. Morrison  <phython@gcc.gnu.org>
 
 	* compile/unsigned.tree: New test.
diff --git a/gcc/testsuite/treelang/compile/extrafunc.tree b/gcc/testsuite/treelang/compile/extrafunc.tree
new file mode 100644
index 0000000000000000000000000000000000000000..6682a118a04d969f5ec37355252af89a7fbc362d
--- /dev/null
+++ b/gcc/testsuite/treelang/compile/extrafunc.tree
@@ -0,0 +1,24 @@
+// { dg-do compile }
+// { dg-options "-O2 -fdump-tree-optimized -Wunused-function" }
+// Check to see that unused functions get removed at -O2 and
+// above.
+static int foo (int bar);
+static int baz (int aaa);
+external_definition int ext (int bbb);
+
+foo
+{
+	return bar;
+}
+
+baz // { dg-warning "defined but not used" }
+{
+	return foo (aaa);
+}
+
+ext
+{
+	return foo (bbb);
+}
+
+// { dg-final { scan-tree-dump-not "baz" "optimized" } }
diff --git a/gcc/testsuite/treelang/compile/extravar.tree b/gcc/testsuite/treelang/compile/extravar.tree
new file mode 100644
index 0000000000000000000000000000000000000000..5c6b5867b8c0b02328643268af82a969047dabbc
--- /dev/null
+++ b/gcc/testsuite/treelang/compile/extravar.tree
@@ -0,0 +1,13 @@
+// { dg-do compile }
+// { dg-options "-fdump-tree-vars -O1 -Wunused-variable" }
+external_definition int bar (int aaa, int ddd);
+
+static int foo = -3;  // { dg-warning "defined but not used" }
+
+bar
+{
+	automatic int ccc;
+
+	return aaa + ddd + +3;
+}
+// { dg-final { scan-tree-dump-not "ccc" "vars" } }