diff --git a/tools/clang/scripts/build.py b/tools/clang/scripts/build.py
index 4ae6dba7..2475d6d 100755
--- a/tools/clang/scripts/build.py
+++ b/tools/clang/scripts/build.py
@@ -892,7 +892,6 @@
   ]
   if sys.platform == 'darwin':
     compiler_rt_args.extend([
-        '-DSANITIZER_MIN_OSX_VERSION=10.7'
         '-DCOMPILER_RT_ENABLE_IOS=ON',
         '-DCOMPILER_RT_ENABLE_WATCHOS=OFF',
         '-DCOMPILER_RT_ENABLE_TVOS=OFF',
@@ -968,10 +967,13 @@
   if sys.platform == 'win32':
     cmake_args.append('-DLLVM_ENABLE_ZLIB=FORCE_ON')
 
-  if sys.platform == 'darwin' and args.build_mac_arm:
-    assert platform.machine() != 'arm64', 'build_mac_arm for cross build only'
-    cmake_args += ['-DCMAKE_OSX_ARCHITECTURES=arm64',
-                   '-DLLVM_USE_HOST_TOOLS=ON']
+  if sys.platform == 'darwin':
+    cmake_args += ['-DCOMPILER_RT_ENABLE_IOS=ON',
+                   '-DSANITIZER_MIN_OSX_VERSION=10.7']
+    if args.build_mac_arm:
+      assert platform.machine() != 'arm64', 'build_mac_arm for cross build only'
+      cmake_args += ['-DCMAKE_OSX_ARCHITECTURES=arm64',
+                     '-DLLVM_USE_HOST_TOOLS=ON']
 
   # The default LLVM_DEFAULT_TARGET_TRIPLE depends on the host machine.
   # Set it explicitly to make the build of clang more hermetic, and also to
diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py
index d04e8a2..0fe15a4 100755
--- a/tools/clang/scripts/update.py
+++ b/tools/clang/scripts/update.py
@@ -35,8 +35,8 @@
 # https://chromium.googlesource.com/chromium/src/+/main/docs/updating_clang.md
 # Reverting problematic clang rolls is safe, though.
 # This is the output of `git describe` and is usable as a commit-ish.
-CLANG_REVISION = 'llvmorg-15-init-7570-gba4537b2'
-CLANG_SUB_REVISION = 2
+CLANG_REVISION = 'llvmorg-15-init-8609-g3254f468'
+CLANG_SUB_REVISION = 1
 
 PACKAGE_VERSION = '%s-%s' % (CLANG_REVISION, CLANG_SUB_REVISION)
 RELEASE_VERSION = '15.0.0'
diff --git a/tools/clang/translation_unit/TranslationUnitGenerator.cpp b/tools/clang/translation_unit/TranslationUnitGenerator.cpp
index 394765b..cf5de94 100644
--- a/tools/clang/translation_unit/TranslationUnitGenerator.cpp
+++ b/tools/clang/translation_unit/TranslationUnitGenerator.cpp
@@ -61,12 +61,7 @@
                           llvm::StringRef file_name,
                           bool is_angled,
                           clang::CharSourceRange range,
-#if defined(LLVM_FORCE_HEAD_REVISION)
                           llvm::Optional<clang::FileEntryRef> file,
-#else
-                          // TODO(crbug.com/1316423): Remove after clang roll.
-                          const clang::FileEntry* file,
-#endif
                           llvm::StringRef search_path,
                           llvm::StringRef relative_path,
                           const clang::Module* imported,
@@ -163,12 +158,7 @@
     llvm::StringRef file_name,
     bool is_angled,
     clang::CharSourceRange range,
-#if defined(LLVM_FORCE_HEAD_REVISION)
     llvm::Optional<clang::FileEntryRef> file,
-#else
-    // TODO(crbug.com/1316423): Remove after clang roll.
-    const clang::FileEntry* file,
-#endif
     llvm::StringRef search_path,
     llvm::StringRef relative_path,
     const clang::Module* imported,