diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 8ca7f6c..6fad78f 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -38,6 +38,7 @@
 -f/--fromfile   -- read names of tests to run from a file (see below)
 -x/--exclude    -- arguments are tests to *exclude*
 -s/--single     -- single step through a set of tests (see below)
+-G/--failfast   -- fail as soon as a test fails (only with -v or -W)
 -u/--use RES1,RES2,...
                 -- specify which special resource intensive tests to run
 -M/--memlimit LIMIT
@@ -241,7 +242,7 @@
          findleaks=False, use_resources=None, trace=False, coverdir='coverage',
          runleaks=False, huntrleaks=False, verbose2=False, print_slow=False,
          random_seed=None, use_mp=None, verbose3=False, forever=False,
-         header=False):
+         header=False, failfast=False):
     """Execute a test suite.
 
     This also parses command-line options and modifies its behavior
@@ -269,13 +270,13 @@
 
     support.record_original_stdout(sys.stdout)
     try:
-        opts, args = getopt.getopt(sys.argv[1:], 'hvqxsSrf:lu:t:TD:NLR:FwWM:nj:',
+        opts, args = getopt.getopt(sys.argv[1:], 'hvqxsSrf:lu:t:TD:NLR:FwWM:nj:G',
             ['help', 'verbose', 'verbose2', 'verbose3', 'quiet',
              'exclude', 'single', 'slow', 'random', 'fromfile', 'findleaks',
              'use=', 'threshold=', 'trace', 'coverdir=', 'nocoverdir',
              'runleaks', 'huntrleaks=', 'memlimit=', 'randseed=',
              'multiprocess=', 'coverage', 'slaveargs=', 'forever', 'debug',
-             'start=', 'nowindows', 'header'])
+             'start=', 'nowindows', 'header', 'failfast'])
     except getopt.error as msg:
         usage(msg)
 
@@ -298,6 +299,8 @@
             debug = True
         elif o in ('-W', '--verbose3'):
             verbose3 = True
+        elif o in ('-G', '--failfast'):
+            failfast = True
         elif o in ('-q', '--quiet'):
             quiet = True;
             verbose = 0
@@ -406,6 +409,8 @@
         usage("-T and -j don't go together!")
     if use_mp and findleaks:
         usage("-l and -j don't go together!")
+    if failfast and not (verbose or verbose3):
+        usage("-G/--failfast needs either -v or -W")
 
     good = []
     bad = []
@@ -545,7 +550,8 @@
                 args_tuple = (
                     (test, verbose, quiet),
                     dict(huntrleaks=huntrleaks, use_resources=use_resources,
-                         debug=debug, output_on_failure=verbose3)
+                         debug=debug, output_on_failure=verbose3,
+                         failfast=failfast)
                 )
                 yield (test, args_tuple)
         pending = tests_and_args()
@@ -623,7 +629,8 @@
             else:
                 try:
                     result = runtest(test, verbose, quiet, huntrleaks, debug,
-                                     output_on_failure=verbose3)
+                                     output_on_failure=verbose3,
+                                     failfast=failfast)
                     accumulate_result(test, result)
                 except KeyboardInterrupt:
                     interrupted = True
@@ -770,7 +777,7 @@
 
 def runtest(test, verbose, quiet,
             huntrleaks=False, debug=False, use_resources=None,
-            output_on_failure=False):
+            output_on_failure=False, failfast=False):
     """Run a single test.
 
     test -- the name of the test
@@ -793,6 +800,8 @@
     if use_resources is not None:
         support.use_resources = use_resources
     try:
+        if failfast:
+            support.failfast = True
         if output_on_failure:
             support.verbose = True
 
diff --git a/Lib/test/support.py b/Lib/test/support.py
index 2827e8b..09846a8 100644
--- a/Lib/test/support.py
+++ b/Lib/test/support.py
@@ -52,7 +52,7 @@
     "reap_children", "cpython_only", "check_impl_detail", "get_attribute",
     "swap_item", "swap_attr", "requires_IEEE_754",
     "TestHandler", "Matcher", "can_symlink", "skip_unless_symlink",
-    "import_fresh_module"
+    "import_fresh_module", "failfast",
     ]
 
 class Error(Exception):
@@ -176,6 +176,7 @@
 max_memuse = 0           # Disable bigmem tests (they will still be run with
                          # small sizes, to make sure they work.)
 real_max_memuse = 0
+failfast = False
 
 # _original_stdout is meant to hold stdout at the time regrtest began.
 # This may be "the real" stdout, or IDLE's emulation of stdout, or whatever.
@@ -1186,7 +1187,8 @@
 def _run_suite(suite):
     """Run tests from a unittest.TestSuite-derived class."""
     if verbose:
-        runner = unittest.TextTestRunner(sys.stdout, verbosity=2)
+        runner = unittest.TextTestRunner(sys.stdout, verbosity=2,
+                                         failfast=failfast)
     else:
         runner = BasicTestRunner()
 
