diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 7ba71ca1e19f45de98c6d63ce33b94a1f753a83e..ee11b279ecc5567c9d03e2126213e2dfac92a4a3 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,8 @@
+2006-11-20  David Daney  <ddaney@avtrex.com>
+
+	* testsuite/libjava.lang/Throw_3.java: New Test.
+	* testsuite/libjava.lang/Throw_3.out: Its expected output.
+
 2006-11-13  Daniel Jacobowitz  <dan@codesourcery.com>
 
 	* configure: Regenerated.
diff --git a/libjava/testsuite/libjava.lang/Throw_3.java b/libjava/testsuite/libjava.lang/Throw_3.java
new file mode 100644
index 0000000000000000000000000000000000000000..5d9a2dc7ad44b44cf1ac3a81f708a25fcf2567c8
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Throw_3.java
@@ -0,0 +1,41 @@
+// Check that a NPE likely thrown from the first instruction of a
+// method (foo) is properly caught.
+public class Throw_3
+{
+  public static void main(String[] args)
+  {
+    Throw_3 al = new Throw_3();
+    try
+      {
+        al.foo(null);
+      }
+    catch (NullPointerException npe)
+      {
+        StackTraceElement ste[] = npe.getStackTrace();
+        StackTraceElement top = ste[0];
+        if ("foo".equals(top.getMethodName()))
+          {
+            System.out.println("ok");
+            return;
+          }
+      }
+    System.out.println("bad");
+  }
+
+  public int bar(int[] a)
+  {
+    System.out.println("Bar");
+    return 5;
+  }
+
+  /**
+   * If the second parameter ('this' being the first) is passed in a
+   * register, then the first machine instruction in foo is likely to
+   * fault when null is passed.
+   */
+  public int foo(int[] a)
+  {
+    int l = a.length;
+    return l + l;
+  }
+}
diff --git a/libjava/testsuite/libjava.lang/Throw_3.out b/libjava/testsuite/libjava.lang/Throw_3.out
new file mode 100644
index 0000000000000000000000000000000000000000..9766475a4185a151dc9d56d614ffb9aaea3bfd42
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/Throw_3.out
@@ -0,0 +1 @@
+ok