diff --git a/testing/tools/githelper.py b/testing/tools/githelper.py
index a401685..2e94196 100644
--- a/testing/tools/githelper.py
+++ b/testing/tools/githelper.py
@@ -64,6 +64,3 @@
   def CloneLocal(self, source_repo, new_repo):
     RunCommandPropagateErr(['git', 'clone', source_repo, new_repo],
                            exit_status_on_error=1)
-
-  def Clean(self):
-    RunCommandPropagateErr(['git', 'clean', '-df'])
diff --git a/testing/tools/safetynet_compare.py b/testing/tools/safetynet_compare.py
index c1d8b93..ef47eab 100755
--- a/testing/tools/safetynet_compare.py
+++ b/testing/tools/safetynet_compare.py
@@ -156,11 +156,11 @@
     self._StashLocalChanges()
 
     self._CheckoutBranch(after_branch)
-    self._BuildCurrentBranch(self.after_build_dir, True)
+    self._BuildCurrentBranch(self.after_build_dir)
     after = self._MeasureCurrentBranch('after', self.after_build_dir)
 
     self._CheckoutBranch(before_branch)
-    self._BuildCurrentBranch(self.before_build_dir, True)
+    self._BuildCurrentBranch(self.before_build_dir)
     before = self._MeasureCurrentBranch('before', self.before_build_dir)
 
     self._CheckoutBranch(branch_to_restore)
@@ -213,13 +213,13 @@
     """
     branch_to_restore = self.git.GetCurrentBranchName()
 
-    self._BuildCurrentBranch(self.after_build_dir, False)
+    self._BuildCurrentBranch(self.after_build_dir)
     after = self._MeasureCurrentBranch('after', self.after_build_dir)
 
     self._StashLocalChanges()
 
     self._CheckoutBranch(other_branch)
-    self._BuildCurrentBranch(self.before_build_dir, True)
+    self._BuildCurrentBranch(self.before_build_dir)
     before = self._MeasureCurrentBranch('before', self.before_build_dir)
 
     self._CheckoutBranch(branch_to_restore)
@@ -245,7 +245,7 @@
       in the given branch. The current branch is considered to be "after" and
       the other branch is considered to be "before".
     """
-    self._BuildCurrentBranch(self.after_build_dir, False)
+    self._BuildCurrentBranch(self.after_build_dir)
     after = self._MeasureCurrentBranch('after', self.after_build_dir)
 
     before = self._ProfileSeparateRepo('before',
@@ -267,7 +267,7 @@
       considered to be "before" and with uncommitted changes is considered to be
       "after".
     """
-    self._BuildCurrentBranch(self.after_build_dir, False)
+    self._BuildCurrentBranch(self.after_build_dir)
     after = self._MeasureCurrentBranch('after', self.after_build_dir)
 
     pushed = self._StashLocalChanges()
@@ -276,7 +276,7 @@
 
     before_build_dir = self.before_build_dir
 
-    self._BuildCurrentBranch(before_build_dir, True)
+    self._BuildCurrentBranch(before_build_dir)
     before = self._MeasureCurrentBranch('before', before_build_dir)
 
     self._RestoreLocalChanges()
@@ -316,7 +316,7 @@
                                      relative_build_dir,
                                      branch)
 
-    self._BuildCurrentBranch(build_dir, False)
+    self._BuildCurrentBranch(build_dir)
     return self._MeasureCurrentBranch(run_label, build_dir)
 
   def _CreateTempRepo(self, dir_name, relative_build_dir, branch):
@@ -383,19 +383,12 @@
     PrintErr('Restoring local changes')
     self.git.StashPopAll()
 
-  def _BuildCurrentBranch(self, build_dir, do_clean):
+  def _BuildCurrentBranch(self, build_dir):
     """Synchronizes and builds the current version of pdfium.
 
     Args:
       build_dir: String with path to build directory
-      do_clean: Whether to remove untracked files before syncing.
     """
-
-    # Some untracked files might be leftover from a gclient sync in a previous
-    # revision that are not .gitignore'd anymore.
-    if do_clean:
-      self.git.Clean()
-
     PrintErr('Syncing...')
     RunCommandPropagateErr(['gclient', 'sync'], exit_status_on_error=1)
     PrintErr('Done.')
