diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 4444f57..c3d2fcb 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -43,6 +43,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
@@ -252,7 +253,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
@@ -292,13 +293,14 @@
 
     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', 'testdir=', 'timeout=', 'wait'])
+             'start=', 'nowindows', 'header', 'testdir=', 'timeout=', 'wait',
+             'failfast'])
     except getopt.error as msg:
         usage(msg)
 
@@ -322,6 +324,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
@@ -454,6 +458,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 = []
@@ -600,7 +606,7 @@
                     (test, verbose, quiet),
                     dict(huntrleaks=huntrleaks, use_resources=use_resources,
                          debug=debug, output_on_failure=verbose3,
-                         timeout=timeout)
+                         timeout=timeout, failfast=failfast)
                 )
                 yield (test, args_tuple)
         pending = tests_and_args()
@@ -685,7 +691,8 @@
             else:
                 try:
                     result = runtest(test, verbose, quiet, huntrleaks, debug,
-                                     output_on_failure=verbose3, timeout=timeout)
+                                     output_on_failure=verbose3,
+                                     timeout=timeout, failfast=failfast)
                     accumulate_result(test, result)
                 except KeyboardInterrupt:
                     interrupted = True
@@ -829,7 +836,7 @@
 
 def runtest(test, verbose, quiet,
             huntrleaks=False, debug=False, use_resources=None,
-            output_on_failure=False, timeout=None):
+            output_on_failure=False, failfast=False, timeout=None):
     """Run a single test.
 
     test -- the name of the test
@@ -857,6 +864,8 @@
     if use_timeout:
         faulthandler.dump_tracebacks_later(timeout, exit=True)
     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 278348e..8a60ba9 100644
--- a/Lib/test/support.py
+++ b/Lib/test/support.py
@@ -55,7 +55,7 @@
     "threading_cleanup", "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", "requires_zlib", "PIPE_MAX_SIZE"
+    "import_fresh_module", "requires_zlib", "PIPE_MAX_SIZE", "failfast",
     ]
 
 class Error(Exception):
@@ -179,6 +179,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.
@@ -1270,7 +1271,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()
 
