diff --git a/mercurial/context.py b/mercurial/context.py
index 008e74b34fb728c98cecb29e337c56a58d93d533_bWVyY3VyaWFsL2NvbnRleHQucHk=..15badd621825e3b112b95f3bb46f8090f95adc0c_bWVyY3VyaWFsL2NvbnRleHQucHk= 100644
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -469,11 +469,16 @@
 
     def filesremoved(self):
         source = self._repo.ui.config('experimental', 'copies.read-from')
-        if (source == 'changeset-only' or
-            (source == 'compatibility' and
-             self._changeset.filesremoved is not None)):
-            return self._changeset.filesremoved or []
-        return scmutil.computechangesetfilesremoved(self)
+        filesremoved = self._changeset.filesremoved
+        if source == 'changeset-only':
+            if filesremoved is None:
+                filesremoved = []
+        elif source == 'compatibility':
+            if filesremoved is None:
+                filesremoved = scmutil.computechangesetfilesremoved(self)
+        else:
+            filesremoved = scmutil.computechangesetfilesremoved(self)
+        return filesremoved
 
     @propertycache
     def _copies(self):