diff --git a/var/spack/repos/builtin/packages/iwyu/package.py b/var/spack/repos/builtin/packages/iwyu/package.py
index eaf0a57913f8b47efcc32f4ae06f459f5e048e96..eb4ceaa4c421c517fba58c1a7fd04f09c59cf660 100644
--- a/var/spack/repos/builtin/packages/iwyu/package.py
+++ b/var/spack/repos/builtin/packages/iwyu/package.py
@@ -28,6 +28,16 @@ class Iwyu(CMakePackage):
     depends_on('llvm+clang@8.0:8.999', when='@0.12')
     depends_on('llvm+clang@7.0:7.999', when='@0.11')
 
+    # Non-X86 CPU use all_targets variants because iwyu use X86AsmParser
+    depends_on('llvm+all_targets', when='target=aarch64:')
+    depends_on('llvm+all_targets', when='target=arm:')
+    depends_on('llvm+all_targets', when='target=ppc:')
+    depends_on('llvm+all_targets', when='target=ppcle:')
+    depends_on('llvm+all_targets', when='target=ppc64:')
+    depends_on('llvm+all_targets', when='target=ppc64le:')
+    depends_on('llvm+all_targets', when='target=sparc:')
+    depends_on('llvm+all_targets', when='target=sparc64:')
+
     @when('@0.14:')
     def cmake_args(self):
         return [self.define('CMAKE_CXX_STANDARD', 14),