diff --git a/llvm/test/Reduce/remove-alias.ll b/llvm/test/Reduce/remove-alias.ll
--- a/llvm/test/Reduce/remove-alias.ll
+++ b/llvm/test/Reduce/remove-alias.ll
@@ -5,15 +5,9 @@
 
 ; CHECK-INTERESTINGNESS: define void @fn3
 
-; CHECK-FINAL: @g1 = global
-; CHECK-FINAL: @g2 = global
-
-; CHECK-FINAL-NOT: $a1
-; CHECK-FINAL-NOT: $a2
-; CHECK-FINAL-NOT: $a3
-; CHECK-FINAL-NOT: $a4
-; CHECK-FINAL: $a5
-; CHECK-FINAL: $a6
+; CHECK-FINAL-NOT: global
+
+; CHECK-FINAL-NOT: = alias
 
 ; CHECK-FINAL-NOT: @llvm.used
 ; CHECK-FINAL-NOT: @llvm.compiler.used
diff --git a/llvm/tools/llvm-reduce/CMakeLists.txt b/llvm/tools/llvm-reduce/CMakeLists.txt
--- a/llvm/tools/llvm-reduce/CMakeLists.txt
+++ b/llvm/tools/llvm-reduce/CMakeLists.txt
@@ -23,6 +23,7 @@
   deltas/ReduceInstructions.cpp
   deltas/ReduceMetadata.cpp
   deltas/ReduceOperandBundles.cpp
+  deltas/ReduceSpecialGlobals.cpp
   llvm-reduce.cpp
 
   DEPENDS
diff --git a/llvm/tools/llvm-reduce/DeltaManager.h b/llvm/tools/llvm-reduce/DeltaManager.h
--- a/llvm/tools/llvm-reduce/DeltaManager.h
+++ b/llvm/tools/llvm-reduce/DeltaManager.h
@@ -23,11 +23,13 @@
 #include "deltas/ReduceInstructions.h"
 #include "deltas/ReduceMetadata.h"
 #include "deltas/ReduceOperandBundles.h"
+#include "deltas/ReduceSpecialGlobals.h"
 
 namespace llvm {
 
 // TODO: Add CLI option to run only specified Passes (for unit tests)
 inline void runDeltaPasses(TestRunner &Tester) {
+  reduceSpecialGlobalsDeltaPass(Tester);
   reduceAliasesDeltaPass(Tester);
   reduceFunctionBodiesDeltaPass(Tester);
   reduceFunctionsDeltaPass(Tester);
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceSpecialGlobals.h b/llvm/tools/llvm-reduce/deltas/ReduceSpecialGlobals.h
new file mode 100644
--- /dev/null
+++ b/llvm/tools/llvm-reduce/deltas/ReduceSpecialGlobals.h
@@ -0,0 +1,21 @@
+//===- ReduceSpecialGlobals.h - Specialized Delta Pass --------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements a function which calls the Generic Delta pass in order
+// to reduce special globals, like @llvm.used, in the provided Module.
+//
+// For more details about special globals, see
+// https://llvm.org/docs/LangRef.html#intrinsic-global-variables
+//
+//===----------------------------------------------------------------------===//
+
+#include "Delta.h"
+
+namespace llvm {
+void reduceSpecialGlobalsDeltaPass(TestRunner &Test);
+} // namespace llvm
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceSpecialGlobals.cpp b/llvm/tools/llvm-reduce/deltas/ReduceSpecialGlobals.cpp
new file mode 100644
--- /dev/null
+++ b/llvm/tools/llvm-reduce/deltas/ReduceSpecialGlobals.cpp
@@ -0,0 +1,61 @@
+//===- ReduceSpecialGlobals.cpp - Specialized Delta Pass ------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements a function which calls the Generic Delta pass in order
+// to reduce special globals, like @llvm.used, in the provided Module.
+//
+// For more details about special globals, see
+// https://llvm.org/docs/LangRef.html#intrinsic-global-variables
+//
+//===----------------------------------------------------------------------===//
+
+#include "ReduceSpecialGlobals.h"
+#include "Delta.h"
+#include "llvm/IR/Constants.h"
+#include "llvm/IR/GlobalValue.h"
+
+using namespace llvm;
+
+static const char *SpecialGlobalNames[] = {"llvm.used", "llvm.compiler.used"};
+
+/// Removes all special globals aren't inside any of the
+/// desired Chunks.
+static void
+extractSpecialGlobalsFromModule(const std::vector<Chunk> &ChunksToKeep,
+                                Module *Program) {
+  Oracle O(ChunksToKeep);
+
+  for (const char *Name : SpecialGlobalNames) {
+    if (auto *Used = Program->getNamedGlobal(Name)) {
+      Used->replaceAllUsesWith(UndefValue::get(Used->getType()));
+      Used->eraseFromParent();
+    }
+  }
+}
+
+/// Counts the amount of special globals and prints their
+/// respective name & index
+static int countSpecialGlobals(Module *Program) {
+  // TODO: Silence index with --quiet flag
+  errs() << "----------------------------\n";
+  errs() << "Special Globals Index Reference:\n";
+  int Count = 0;
+  for (const char *Name : SpecialGlobalNames) {
+    if (auto *Used = Program->getNamedGlobal(Name))
+      errs() << "\t" << ++Count << ": " << Used->getName() << "\n";
+  }
+  errs() << "----------------------------\n";
+  return Count;
+}
+
+void llvm::reduceSpecialGlobalsDeltaPass(TestRunner &Test) {
+  errs() << "*** Reducing Special Globals ...\n";
+  int Functions = countSpecialGlobals(Test.getProgram());
+  runDeltaPass(Test, Functions, extractSpecialGlobalsFromModule);
+  errs() << "----------------------------\n";
+}