diff --git a/utils/lit/lit/builtin_commands/diff.py b/utils/lit/lit/builtin_commands/diff.py
index fc5d037..33895b7 100644
--- a/utils/lit/lit/builtin_commands/diff.py
+++ b/utils/lit/lit/builtin_commands/diff.py
@@ -31,13 +31,8 @@
 def compareTwoFiles(flags, filepaths):
     filelines = []
     for file in filepaths:
-        if file == "-":
-            stdin_fileno = sys.stdin.fileno()
-            with os.fdopen(os.dup(stdin_fileno), 'rb') as stdin_bin:
-                filelines.append(stdin_bin.readlines())
-        else:
-            with open(file, 'rb') as file_bin:
-                filelines.append(file_bin.readlines())
+        with open(file, 'rb') as file_bin:
+            filelines.append(file_bin.readlines())
 
     try:
         return compareTwoTextFiles(flags, filepaths, filelines,
@@ -218,13 +213,10 @@
     exitCode = 0
     try:
         for file in args:
-            if file != "-" and not os.path.isabs(file):
+            if not os.path.isabs(file):
                 file = os.path.realpath(os.path.join(os.getcwd(), file))
 
             if flags.recursive_diff:
-                if file == "-":
-                    sys.stderr.write("Error: cannot recursively compare '-'\n")
-                    sys.exit(1)
                 dir_trees.append(getDirTree(file))
             else:
                 filepaths.append(file)
diff --git a/utils/lit/tests/Inputs/shtest-shell/diff-encodings.txt b/utils/lit/tests/Inputs/shtest-shell/diff-encodings.txt
index 044908f..d8b9718 100644
--- a/utils/lit/tests/Inputs/shtest-shell/diff-encodings.txt
+++ b/utils/lit/tests/Inputs/shtest-shell/diff-encodings.txt
@@ -5,11 +5,5 @@
 # RUN: diff -u diff-in.utf8 diff-in.bin && false || true
 # RUN: diff -u diff-in.bin diff-in.utf8 && false || true
 
-# RUN: cat diff-in.bin | diff -u - diff-in.bin
-# RUN: cat diff-in.bin | diff -u diff-in.bin -
-# RUN: cat diff-in.bin | diff -u diff-in.utf16 - && false || true
-# RUN: cat diff-in.bin | diff -u diff-in.utf8 - && false || true
-# RUN: cat diff-in.bin | diff -u - diff-in.utf8 && false || true
-
 # Fail so lit will print output.
 # RUN: false
diff --git a/utils/lit/tests/Inputs/shtest-shell/diff-pipes.txt b/utils/lit/tests/Inputs/shtest-shell/diff-pipes.txt
index 0bd73a8..ce0abca 100644
--- a/utils/lit/tests/Inputs/shtest-shell/diff-pipes.txt
+++ b/utils/lit/tests/Inputs/shtest-shell/diff-pipes.txt
@@ -5,16 +5,6 @@
 # RUN: diff %t.foo %t.foo | FileCheck -allow-empty -check-prefix=EMPTY %s
 # RUN: diff -u %t.foo %t.bar | FileCheck %s && false || true
 
-# Check input pipe.
-# RUN: echo foo | diff -u - %t.foo
-# RUN: echo foo | diff -u %t.foo -
-# RUN: echo bar | diff -u %t.foo - && false || true
-# RUN: echo bar | diff -u - %t.foo && false || true
-
-# Check output and input pipes at the same time.
-# RUN: echo foo | diff - %t.foo | FileCheck -allow-empty -check-prefix=EMPTY %s
-# RUN: echo bar | diff -u %t.foo - | FileCheck %s && false || true
-
 # Fail so lit will print output.
 # RUN: false
 
diff --git a/utils/lit/tests/Inputs/shtest-shell/diff-r-error-7.txt b/utils/lit/tests/Inputs/shtest-shell/diff-r-error-7.txt
deleted file mode 100644
index 08c5044..0000000
--- a/utils/lit/tests/Inputs/shtest-shell/diff-r-error-7.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-# diff -r currently cannot handle stdin.
-# RUN: diff -r - %t
diff --git a/utils/lit/tests/Inputs/shtest-shell/diff-r-error-8.txt b/utils/lit/tests/Inputs/shtest-shell/diff-r-error-8.txt
deleted file mode 100644
index 26361a9..0000000
--- a/utils/lit/tests/Inputs/shtest-shell/diff-r-error-8.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-# diff -r currently cannot handle stdin.
-# RUN: diff -r %t -
diff --git a/utils/lit/tests/max-failures.py b/utils/lit/tests/max-failures.py
index 6ad3753..7bd5c32 100644
--- a/utils/lit/tests/max-failures.py
+++ b/utils/lit/tests/max-failures.py
@@ -8,7 +8,7 @@
 #
 # END.
 
-# CHECK: Failing Tests (32)
+# CHECK: Failing Tests (30)
 # CHECK: Failing Tests (1)
 # CHECK: Failing Tests (2)
 # CHECK: error: argument --max-failures: requires positive integer, but found '0'
diff --git a/utils/lit/tests/shtest-shell.py b/utils/lit/tests/shtest-shell.py
index 9a6f2aa..dd5bfbe 100644
--- a/utils/lit/tests/shtest-shell.py
+++ b/utils/lit/tests/shtest-shell.py
@@ -81,60 +81,6 @@
 # CHECK: error: command failed with exit status: 1
 # CHECK: $ "true"
 
-# CHECK: $ "cat" "diff-in.bin"
-# CHECK-NOT: error
-# CHECK: $ "diff" "-u" "-" "diff-in.bin"
-# CHECK-NOT: error
-
-# CHECK: $ "cat" "diff-in.bin"
-# CHECK-NOT: error
-# CHECK: $ "diff" "-u" "diff-in.bin" "-"
-# CHECK-NOT: error
-
-# CHECK: $ "cat" "diff-in.bin"
-# CHECK-NOT: error
-# CHECK: $ "diff" "-u" "diff-in.utf16" "-"
-# CHECK: # command output:
-# CHECK-NEXT: ---
-# CHECK-NEXT: +++
-# CHECK-NEXT: @@
-# CHECK-NEXT: {{^ .f.o.o.$}}
-# CHECK-NEXT: {{^-.b.a.r.$}}
-# CHECK-NEXT: {{^\+.b.a.r..}}
-# CHECK-NEXT: {{^ .b.a.z.$}}
-# CHECK: error: command failed with exit status: 1
-# CHECK: $ "true"
-
-# CHECK: $ "cat" "diff-in.bin"
-# CHECK-NOT: error
-# CHECK: $ "diff" "-u" "diff-in.utf8" "-"
-# CHECK: # command output:
-# CHECK-NEXT: ---
-# CHECK-NEXT: +++
-# CHECK-NEXT: @@
-# CHECK-NEXT: -foo
-# CHECK-NEXT: -bar
-# CHECK-NEXT: -baz
-# CHECK-NEXT: {{^\+.f.o.o.$}}
-# CHECK-NEXT: {{^\+.b.a.r..}}
-# CHECK-NEXT: {{^\+.b.a.z.$}}
-# CHECK: error: command failed with exit status: 1
-# CHECK: $ "true"
-
-# CHECK: $ "diff" "-u" "-" "diff-in.utf8"
-# CHECK: # command output:
-# CHECK-NEXT: ---
-# CHECK-NEXT: +++
-# CHECK-NEXT: @@
-# CHECK-NEXT: {{^\-.f.o.o.$}}
-# CHECK-NEXT: {{^\-.b.a.r..}}
-# CHECK-NEXT: {{^\-.b.a.z.$}}
-# CHECK-NEXT: +foo
-# CHECK-NEXT: +bar
-# CHECK-NEXT: +baz
-# CHECK: error: command failed with exit status: 1
-# CHECK: $ "true"
-
 # CHECK: $ "false"
 
 # CHECK: ***
@@ -212,51 +158,6 @@
 # CHECK-NOT: error
 # CHECK: $ "true"
 
-# CHECK: $ "echo" "foo"
-# CHECK: $ "diff" "-u" "-" "{{[^"]*}}.foo"
-# CHECK-NOT: note
-# CHECK-NOT: error
-
-# CHECK: $ "echo" "foo"
-# CHECK: $ "diff" "-u" "{{[^"]*}}.foo" "-"
-# CHECK-NOT: note
-# CHECK-NOT: error
-
-# CHECK: $ "echo" "bar"
-# CHECK: $ "diff" "-u" "{{[^"]*}}.foo" "-"
-# CHECK: # command output:
-# CHECK: @@
-# CHECK-NEXT: -foo
-# CHECK-NEXT: +bar
-# CHECK: error: command failed with exit status: 1
-# CHECK: $ "true"
-
-# CHECK: $ "echo" "bar"
-# CHECK: $ "diff" "-u" "-" "{{[^"]*}}.foo"
-# CHECK: # command output:
-# CHECK: @@
-# CHECK-NEXT: -bar
-# CHECK-NEXT: +foo
-# CHECK: error: command failed with exit status: 1
-# CHECK: $ "true"
-
-# CHECK: $ "echo" "foo"
-# CHECK: $ "diff" "-" "{{[^"]*}}.foo"
-# CHECK-NOT: note
-# CHECK-NOT: error
-# CHECK: $ "FileCheck"
-# CHECK-NOT: note
-# CHECK-NOT: error
-
-# CHECK: $ "echo" "bar"
-# CHECK: $ "diff" "-u" "{{[^"]*}}.foo" "-"
-# CHECK: note: command had no output on stdout or stderr
-# CHECK: error: command failed with exit status: 1
-# CHECK: $ "FileCheck"
-# CHECK-NOT: note
-# CHECK-NOT: error
-# CHECK: $ "true"
-
 # CHECK: $ "false"
 
 # CHECK: ***
@@ -315,20 +216,6 @@
 # CHECK: File {{.*}}dir1{{.*}}extra_file is a regular empty file while file {{.*}}dir2{{.*}}extra_file is a directory
 # CHECK: error: command failed with exit status: 1
 
-# CHECK: FAIL: shtest-shell :: diff-r-error-7.txt
-# CHECK: *** TEST 'shtest-shell :: diff-r-error-7.txt' FAILED ***
-# CHECK: $ "diff" "-r" "-" "{{[^"]*}}"
-# CHECK: # command stderr:
-# CHECK: Error: cannot recursively compare '-'
-# CHECK: error: command failed with exit status: 1
-
-# CHECK: FAIL: shtest-shell :: diff-r-error-8.txt
-# CHECK: *** TEST 'shtest-shell :: diff-r-error-8.txt' FAILED ***
-# CHECK: $ "diff" "-r" "{{[^"]*}}" "-"
-# CHECK: # command stderr:
-# CHECK: Error: cannot recursively compare '-'
-# CHECK: error: command failed with exit status: 1
-
 # CHECK: PASS: shtest-shell :: diff-r.txt
 
 
@@ -539,4 +426,4 @@
 # CHECK: PASS: shtest-shell :: sequencing-0.txt
 # CHECK: XFAIL: shtest-shell :: sequencing-1.txt
 # CHECK: PASS: shtest-shell :: valid-shell.txt
-# CHECK: Failing Tests (32)
+# CHECK: Failing Tests (30)
