Skip to content

[Clang] Remove ARCMigrate #119269

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Jan 30, 2025
Merged

[Clang] Remove ARCMigrate #119269

merged 8 commits into from
Jan 30, 2025

Conversation

Sirraide
Copy link
Member

@Sirraide Sirraide commented Dec 9, 2024

In the discussion around #116792, @rjmccall mentioned that ARCMigrate has been obsoleted and that we could go ahead and remove it from Clang, so this patch does just that.

I searched for every mention of ‘ARCMT’/‘ARCMigrate’/‘ObjCRewrite’ and removed everything that seemed related to what I was able to find. I also had to touch a bunch of bazel and gn build scripts as part of this, neither of which I’m familiar with so it’s possible that I missed something there.

@Sirraide Sirraide added clang Clang issues not falling into any other category clang:frontend Language frontend issues, e.g. anything involving "Sema" objective-c labels Dec 9, 2024
@llvmbot llvmbot added clang:driver 'clang' and 'clang++' user-facing binaries. Not 'clang-cl' clang:as-a-library libclang and C++ API clang:static analyzer flang Flang issues not falling into any other category bazel "Peripheral" support tier build system: utils/bazel labels Dec 9, 2024
@llvmbot
Copy link
Member

llvmbot commented Dec 9, 2024

@llvm/pr-subscribers-clang-static-analyzer-1
@llvm/pr-subscribers-clang-driver

@llvm/pr-subscribers-clang

Author: None (Sirraide)

Changes

In the discussion around #116792, @rjmccall mentioned that ARCMigrate has been obsoleted and that we could go ahead and remove it from Clang, so this patch does just that.

I searched for every mention of ‘ARCMT’/‘ARCMigrate’/‘ObjCRewrite’ and removed everything that seemed related to what I was able to find. I also had to touch a bunch of bazel and gn build scripts as part of this, neither of which I’m familiar with so it’s possible that I missed something there.


Patch is 1.49 MiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/119269.diff

383 Files Affected:

  • (modified) clang/CMakeLists.txt (-9)
  • (modified) clang/cmake/caches/Android.cmake (-1)
  • (modified) clang/cmake/caches/Fuchsia-stage2.cmake (-1)
  • (modified) clang/cmake/caches/Fuchsia.cmake (-1)
  • (modified) clang/docs/ReleaseNotes.rst (+2)
  • (modified) clang/include/clang-c/Index.h (-60)
  • (removed) clang/include/clang/ARCMigrate/ARCMT.h (-130)
  • (removed) clang/include/clang/ARCMigrate/ARCMTActions.h (-76)
  • (removed) clang/include/clang/ARCMigrate/FileRemapper.h (-84)
  • (modified) clang/include/clang/Basic/DiagnosticCommonKinds.td (-10)
  • (modified) clang/include/clang/Config/config.h.cmake (-2)
  • (modified) clang/include/clang/Driver/Action.h (-12)
  • (modified) clang/include/clang/Driver/Options.td (+1-109)
  • (modified) clang/include/clang/Frontend/FrontendOptions.h (+8-84)
  • (modified) clang/include/clang/Rewrite/Frontend/FrontendActions.h (-6)
  • (removed) clang/lib/ARCMigrate/ARCMT.cpp (-616)
  • (removed) clang/lib/ARCMigrate/ARCMTActions.cpp (-59)
  • (removed) clang/lib/ARCMigrate/CMakeLists.txt (-48)
  • (removed) clang/lib/ARCMigrate/FileRemapper.cpp (-274)
  • (removed) clang/lib/ARCMigrate/Internals.h (-180)
  • (removed) clang/lib/ARCMigrate/ObjCMT.cpp (-2262)
  • (removed) clang/lib/ARCMigrate/PlistReporter.cpp (-124)
  • (removed) clang/lib/ARCMigrate/TransAPIUses.cpp (-107)
  • (removed) clang/lib/ARCMigrate/TransARCAssign.cpp (-77)
  • (removed) clang/lib/ARCMigrate/TransAutoreleasePool.cpp (-435)
  • (removed) clang/lib/ARCMigrate/TransBlockObjCVariable.cpp (-146)
  • (removed) clang/lib/ARCMigrate/TransEmptyStatementsAndDealloc.cpp (-249)
  • (removed) clang/lib/ARCMigrate/TransGCAttrs.cpp (-350)
  • (removed) clang/lib/ARCMigrate/TransGCCalls.cpp (-76)
  • (removed) clang/lib/ARCMigrate/TransProperties.cpp (-379)
  • (removed) clang/lib/ARCMigrate/TransProtectedScope.cpp (-203)
  • (removed) clang/lib/ARCMigrate/TransRetainReleaseDealloc.cpp (-459)
  • (removed) clang/lib/ARCMigrate/TransUnbridgedCasts.cpp (-466)
  • (removed) clang/lib/ARCMigrate/TransUnusedInitDelegate.cpp (-77)
  • (removed) clang/lib/ARCMigrate/TransZeroOutPropsInDealloc.cpp (-224)
  • (removed) clang/lib/ARCMigrate/TransformActions.cpp (-700)
  • (removed) clang/lib/ARCMigrate/Transforms.cpp (-594)
  • (removed) clang/lib/ARCMigrate/Transforms.h (-224)
  • (modified) clang/lib/CMakeLists.txt (-3)
  • (modified) clang/lib/Driver/Action.cpp (+2-7)
  • (modified) clang/lib/Driver/Driver.cpp (+2-4)
  • (modified) clang/lib/Driver/ToolChain.cpp (-1)
  • (modified) clang/lib/Driver/ToolChains/Clang.cpp (-76)
  • (modified) clang/lib/Driver/ToolChains/Darwin.cpp (-14)
  • (modified) clang/lib/Frontend/CompilerInstance.cpp (-4)
  • (modified) clang/lib/Frontend/CompilerInvocation.cpp (-13)
  • (modified) clang/lib/Frontend/InitPreprocessor.cpp (+1-2)
  • (modified) clang/lib/Frontend/Rewrite/CMakeLists.txt (-2)
  • (modified) clang/lib/Frontend/Rewrite/FrontendActions.cpp (-21)
  • (removed) clang/lib/Frontend/Rewrite/RewriteModernObjC.cpp (-7531)
  • (removed) clang/lib/Frontend/Rewrite/RewriteObjC.cpp (-5866)
  • (modified) clang/lib/FrontendTool/CMakeLists.txt (-6)
  • (modified) clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp (+3-44)
  • (modified) clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp (-3)
  • (removed) clang/test/ARCMT/Common.h (-110)
  • (removed) clang/test/ARCMT/GC-check-warn-nsalloc.m (-10)
  • (removed) clang/test/ARCMT/GC-check.m (-19)
  • (removed) clang/test/ARCMT/GC-no-arc-runtime.m (-80)
  • (removed) clang/test/ARCMT/GC-no-arc-runtime.m.result (-72)
  • (removed) clang/test/ARCMT/GC-no-finalize-removal.m (-88)
  • (removed) clang/test/ARCMT/GC-no-finalize-removal.m.result (-96)
  • (removed) clang/test/ARCMT/GC.h (-6)
  • (removed) clang/test/ARCMT/GC.m (-93)
  • (removed) clang/test/ARCMT/GC.m.result (-88)
  • (removed) clang/test/ARCMT/Inputs/Module.framework/Frameworks/SubFramework.framework/Headers/SubFramework.h (-5)
  • (removed) clang/test/ARCMT/Inputs/Module.framework/Headers/Buried/Treasure.h (-1)
  • (removed) clang/test/ARCMT/Inputs/Module.framework/Headers/Module.h (-28)
  • (removed) clang/test/ARCMT/Inputs/Module.framework/Headers/NotInModule.h (-1)
  • (removed) clang/test/ARCMT/Inputs/Module.framework/Headers/Sub.h (-3)
  • (removed) clang/test/ARCMT/Inputs/Module.framework/Headers/Sub2.h (-1)
  • (removed) clang/test/ARCMT/Inputs/Module.framework/Module ()
  • (removed) clang/test/ARCMT/Inputs/Module.framework/PrivateHeaders/ModulePrivate.h (-1)
  • (removed) clang/test/ARCMT/Inputs/module.modulemap (-309)
  • (removed) clang/test/ARCMT/Inputs/test.h (-15)
  • (removed) clang/test/ARCMT/Inputs/test.h.result (-13)
  • (removed) clang/test/ARCMT/Inputs/test1.m.in (-16)
  • (removed) clang/test/ARCMT/Inputs/test1.m.in.result (-15)
  • (removed) clang/test/ARCMT/Inputs/test2.m.in (-6)
  • (removed) clang/test/ARCMT/Inputs/test2.m.in.result (-5)
  • (removed) clang/test/ARCMT/Inputs/with space/test.h (-15)
  • (removed) clang/test/ARCMT/Inputs/with space/test.h.result (-13)
  • (removed) clang/test/ARCMT/Inputs/with space/test1.m.in (-6)
  • (removed) clang/test/ARCMT/Inputs/with space/test1.m.in.result (-5)
  • (removed) clang/test/ARCMT/Inputs/with space/test2.m.in (-6)
  • (removed) clang/test/ARCMT/Inputs/with space/test2.m.in.result (-5)
  • (removed) clang/test/ARCMT/allowlisted/Inputs/header1.h (-1)
  • (removed) clang/test/ARCMT/allowlisted/header1.h (-8)
  • (removed) clang/test/ARCMT/allowlisted/header1.h.result (-7)
  • (removed) clang/test/ARCMT/allowlisted/header2.h (-8)
  • (removed) clang/test/ARCMT/allowlisted/header2.h.result (-7)
  • (removed) clang/test/ARCMT/allowlisted/objcmt-with-allowlist-impl.m (-18)
  • (removed) clang/test/ARCMT/allowlisted/objcmt-with-allowlist-impl.m.result (-18)
  • (removed) clang/test/ARCMT/allowlisted/objcmt-with-allowlist.m (-12)
  • (removed) clang/test/ARCMT/api.m (-9)
  • (removed) clang/test/ARCMT/api.m.result (-9)
  • (removed) clang/test/ARCMT/assign-prop-no-arc-runtime.m (-15)
  • (removed) clang/test/ARCMT/assign-prop-no-arc-runtime.m.result (-15)
  • (removed) clang/test/ARCMT/assign-prop-with-arc-runtime.m (-72)
  • (removed) clang/test/ARCMT/assign-prop-with-arc-runtime.m.result (-72)
  • (removed) clang/test/ARCMT/atautorelease-2.m (-29)
  • (removed) clang/test/ARCMT/atautorelease-2.m.result (-28)
  • (removed) clang/test/ARCMT/atautorelease-3.m (-40)
  • (removed) clang/test/ARCMT/atautorelease-3.m.result (-31)
  • (removed) clang/test/ARCMT/atautorelease-check.m (-144)
  • (removed) clang/test/ARCMT/atautorelease.m (-61)
  • (removed) clang/test/ARCMT/atautorelease.m.result (-60)
  • (removed) clang/test/ARCMT/autoreleases.m (-75)
  • (removed) clang/test/ARCMT/autoreleases.m.result (-69)
  • (removed) clang/test/ARCMT/block_copy_release.m (-17)
  • (removed) clang/test/ARCMT/block_copy_release.m.result (-15)
  • (removed) clang/test/ARCMT/check-api.m (-43)
  • (removed) clang/test/ARCMT/check-with-pch.m (-15)
  • (removed) clang/test/ARCMT/check-with-serialized-diag.m (-55)
  • (removed) clang/test/ARCMT/checking-in-arc.m (-50)
  • (removed) clang/test/ARCMT/checking.m (-351)
  • (removed) clang/test/ARCMT/cxx-checking.mm (-100)
  • (removed) clang/test/ARCMT/cxx-rewrite.mm (-33)
  • (removed) clang/test/ARCMT/cxx-rewrite.mm.result (-31)
  • (removed) clang/test/ARCMT/dealloc.m (-24)
  • (removed) clang/test/ARCMT/dealloc.m.result (-20)
  • (removed) clang/test/ARCMT/designated-init-in-header/designated-init-in-header.m (-3)
  • (removed) clang/test/ARCMT/designated-init-in-header/file1.m.in (-2)
  • (removed) clang/test/ARCMT/designated-init-in-header/file2.m.in (-14)
  • (removed) clang/test/ARCMT/designated-init-in-header/file2.m.in.result (-14)
  • (removed) clang/test/ARCMT/designated-init-in-header/header1.h (-14)
  • (removed) clang/test/ARCMT/designated-init-in-header/header1.h.result (-13)
  • (removed) clang/test/ARCMT/dispatch.m (-18)
  • (removed) clang/test/ARCMT/dispatch.m.result (-14)
  • (removed) clang/test/ARCMT/driver-migrate.m (-15)
  • (removed) clang/test/ARCMT/init.m (-39)
  • (removed) clang/test/ARCMT/init.m.result (-39)
  • (removed) clang/test/ARCMT/lit.local.cfg (-2)
  • (removed) clang/test/ARCMT/migrate-emit-errors.m (-12)
  • (removed) clang/test/ARCMT/migrate-on-pch-and-module.m (-12)
  • (removed) clang/test/ARCMT/migrate-plist-output.m (-51)
  • (removed) clang/test/ARCMT/migrate-space-in-path.m (-5)
  • (removed) clang/test/ARCMT/migrate-with-pch.m (-6)
  • (removed) clang/test/ARCMT/migrate.m (-5)
  • (removed) clang/test/ARCMT/no-canceling-bridge-to-bridge-cast.m (-41)
  • (removed) clang/test/ARCMT/nonobjc-to-objc-cast-2.m (-63)
  • (removed) clang/test/ARCMT/nonobjc-to-objc-cast.m (-83)
  • (removed) clang/test/ARCMT/nonobjc-to-objc-cast.m.result (-83)
  • (removed) clang/test/ARCMT/objcmt-arc-cf-annotations.m (-2017)
  • (removed) clang/test/ARCMT/objcmt-arc-cf-annotations.m.result (-2063)
  • (removed) clang/test/ARCMT/objcmt-atomic-property.m (-227)
  • (removed) clang/test/ARCMT/objcmt-atomic-property.m.result (-200)
  • (removed) clang/test/ARCMT/objcmt-boxing.m (-106)
  • (removed) clang/test/ARCMT/objcmt-boxing.m.result (-106)
  • (removed) clang/test/ARCMT/objcmt-designated-initializer.m (-44)
  • (removed) clang/test/ARCMT/objcmt-designated-initializer.m.result (-44)
  • (removed) clang/test/ARCMT/objcmt-instancetype-2.m (-103)
  • (removed) clang/test/ARCMT/objcmt-instancetype-2.m.result (-103)
  • (removed) clang/test/ARCMT/objcmt-instancetype-unnecessary-diff.m (-10)
  • (removed) clang/test/ARCMT/objcmt-instancetype.m (-111)
  • (removed) clang/test/ARCMT/objcmt-instancetype.m.result (-111)
  • (removed) clang/test/ARCMT/objcmt-invalid-code.mm (-19)
  • (removed) clang/test/ARCMT/objcmt-invalid-code.mm.result (-19)
  • (removed) clang/test/ARCMT/objcmt-migrate-all.m (-133)
  • (removed) clang/test/ARCMT/objcmt-migrate-all.m.result (-132)
  • (removed) clang/test/ARCMT/objcmt-ns-enum-crash.m (-14)
  • (removed) clang/test/ARCMT/objcmt-ns-enum-crash.m.result (-14)
  • (removed) clang/test/ARCMT/objcmt-ns-macros.m (-379)
  • (removed) clang/test/ARCMT/objcmt-ns-macros.m.result (-355)
  • (removed) clang/test/ARCMT/objcmt-ns-nonatomic-iosonly.m (-233)
  • (removed) clang/test/ARCMT/objcmt-ns-nonatomic-iosonly.m.result (-206)
  • (removed) clang/test/ARCMT/objcmt-ns-returns-inner-pointer.m (-128)
  • (removed) clang/test/ARCMT/objcmt-ns-returns-inner-pointer.m.result (-128)
  • (removed) clang/test/ARCMT/objcmt-numeric-literals.m (-502)
  • (removed) clang/test/ARCMT/objcmt-numeric-literals.m.result (-502)
  • (removed) clang/test/ARCMT/objcmt-property-availability.m (-45)
  • (removed) clang/test/ARCMT/objcmt-property-availability.m.result (-42)
  • (removed) clang/test/ARCMT/objcmt-property-dot-syntax.m (-117)
  • (removed) clang/test/ARCMT/objcmt-property-dot-syntax.m.result (-117)
  • (removed) clang/test/ARCMT/objcmt-property.m (-243)
  • (removed) clang/test/ARCMT/objcmt-property.m.result (-215)
  • (removed) clang/test/ARCMT/objcmt-protocol-conformance.m (-129)
  • (removed) clang/test/ARCMT/objcmt-protocol-conformance.m.result (-129)
  • (removed) clang/test/ARCMT/objcmt-subscripting-literals-in-arc.m (-108)
  • (removed) clang/test/ARCMT/objcmt-subscripting-literals-in-arc.m.result (-108)
  • (removed) clang/test/ARCMT/objcmt-subscripting-literals.m (-230)
  • (removed) clang/test/ARCMT/objcmt-subscripting-literals.m.result (-230)
  • (removed) clang/test/ARCMT/objcmt-subscripting-unavailable.m (-79)
  • (removed) clang/test/ARCMT/objcmt-subscripting-unavailable.m.result (-79)
  • (removed) clang/test/ARCMT/objcmt-undefined-ns-macros.m (-22)
  • (removed) clang/test/ARCMT/objcmt-undefined-ns-macros.m.result (-24)
  • (removed) clang/test/ARCMT/objcmt-with-pch.m (-17)
  • (removed) clang/test/ARCMT/objcmt-with-pch.m.result (-17)
  • (removed) clang/test/ARCMT/protected-scope.m (-36)
  • (removed) clang/test/ARCMT/protected-scope.m.result (-38)
  • (removed) clang/test/ARCMT/releases-driver.m (-67)
  • (removed) clang/test/ARCMT/releases-driver.m.result (-58)
  • (removed) clang/test/ARCMT/releases.m (-98)
  • (removed) clang/test/ARCMT/releases.m.result (-87)
  • (removed) clang/test/ARCMT/remap-applying.c (-4)
  • (removed) clang/test/ARCMT/remap-applying.c.result (-4)
  • (removed) clang/test/ARCMT/remove-dealloc-method.m (-26)
  • (removed) clang/test/ARCMT/remove-dealloc-method.m.result (-20)
  • (removed) clang/test/ARCMT/remove-dealloc-zerouts.m (-44)
  • (removed) clang/test/ARCMT/remove-dealloc-zerouts.m.result (-39)
  • (removed) clang/test/ARCMT/remove-statements.m (-45)
  • (removed) clang/test/ARCMT/remove-statements.m.result (-38)
  • (removed) clang/test/ARCMT/retains.m (-71)
  • (removed) clang/test/ARCMT/retains.m.result (-65)
  • (removed) clang/test/ARCMT/rewrite-block-var.m (-45)
  • (removed) clang/test/ARCMT/rewrite-block-var.m.result (-45)
  • (removed) clang/test/ARCMT/safe-arc-assign.m (-14)
  • (removed) clang/test/ARCMT/safe-arc-assign.m.result (-14)
  • (removed) clang/test/ARCMT/verify.m (-17)
  • (removed) clang/test/ARCMT/with-arc-mode-modify.m (-13)
  • (removed) clang/test/ARCMT/with-arc-mode-modify.m.result (-12)
  • (modified) clang/test/CMakeLists.txt (+1-9)
  • (modified) clang/test/ClangScanDeps/strip-input-args.m (+2-7)
  • (removed) clang/test/Driver/objc-sdk-migration-options.m (-8)
  • (modified) clang/test/Misc/warning-flags.c (+1-3)
  • (removed) clang/test/Rewriter/blockcast3.mm (-25)
  • (removed) clang/test/Rewriter/blockstruct.m (-16)
  • (removed) clang/test/Rewriter/crash.m (-23)
  • (removed) clang/test/Rewriter/finally.m (-43)
  • (removed) clang/test/Rewriter/func-in-impl.m (-30)
  • (removed) clang/test/Rewriter/id-test-3.m (-14)
  • (removed) clang/test/Rewriter/inner-block-helper-funcs.mm (-31)
  • (removed) clang/test/Rewriter/instancetype-test.mm (-77)
  • (removed) clang/test/Rewriter/ivar-encoding-1.m (-15)
  • (removed) clang/test/Rewriter/ivar-encoding-2.m (-12)
  • (removed) clang/test/Rewriter/line-generation-test.m (-39)
  • (removed) clang/test/Rewriter/lit.local.cfg (-3)
  • (removed) clang/test/Rewriter/metadata-test-1.m (-12)
  • (removed) clang/test/Rewriter/metadata-test-2.m (-15)
  • (removed) clang/test/Rewriter/method-encoding-1.m (-18)
  • (removed) clang/test/Rewriter/modern-write-bf-abi.mm (-119)
  • (removed) clang/test/Rewriter/no-integrated-preprocessing-64bit.m (-25)
  • (removed) clang/test/Rewriter/no-integrated-preprocessing.m (-25)
  • (removed) clang/test/Rewriter/objc-bool-literal-check-modern.mm (-28)
  • (removed) clang/test/Rewriter/objc-bool-literal-modern-1.mm (-32)
  • (removed) clang/test/Rewriter/objc-bool-literal-modern.mm (-22)
  • (removed) clang/test/Rewriter/objc-encoding-bug-1.m (-19)
  • (removed) clang/test/Rewriter/objc-ivar-receiver-1.m (-24)
  • (removed) clang/test/Rewriter/objc-modern-StretAPI-2.mm (-29)
  • (removed) clang/test/Rewriter/objc-modern-StretAPI-3.mm (-57)
  • (removed) clang/test/Rewriter/objc-modern-StretAPI.mm (-44)
  • (removed) clang/test/Rewriter/objc-modern-boxing.mm (-72)
  • (removed) clang/test/Rewriter/objc-modern-class-init-hooks.mm (-35)
  • (removed) clang/test/Rewriter/objc-modern-class-init.mm (-22)
  • (removed) clang/test/Rewriter/objc-modern-container-subscript.mm (-48)
  • (removed) clang/test/Rewriter/objc-modern-fast-enumeration.mm (-24)
  • (removed) clang/test/Rewriter/objc-modern-getclass-proto.mm (-9)
  • (removed) clang/test/Rewriter/objc-modern-implicit-cast.mm (-32)
  • (removed) clang/test/Rewriter/objc-modern-ivar-receiver-1.mm (-30)
  • (removed) clang/test/Rewriter/objc-modern-linkage-spec.mm (-20)
  • (removed) clang/test/Rewriter/objc-modern-metadata-visibility.mm (-39)
  • (removed) clang/test/Rewriter/objc-modern-numeric-literal.mm (-68)
  • (removed) clang/test/Rewriter/objc-modern-property-attributes.mm (-55)
  • (removed) clang/test/Rewriter/objc-modern-property-bitfield.m (-42)
  • (removed) clang/test/Rewriter/objc-string-concat-1.m (-14)
  • (removed) clang/test/Rewriter/objc-super-test.m (-18)
  • (removed) clang/test/Rewriter/objc-synchronized-1.m (-20)
  • (removed) clang/test/Rewriter/properties.m (-57)
  • (removed) clang/test/Rewriter/property-dot-syntax.mm (-44)
  • (removed) clang/test/Rewriter/protocol-rewrite-1.m (-70)
  • (removed) clang/test/Rewriter/protocol-rewrite-2.m (-6)
  • (removed) clang/test/Rewriter/rewrite-anonymous-union.m (-29)
  • (removed) clang/test/Rewriter/rewrite-api-bug.m (-11)
  • (removed) clang/test/Rewriter/rewrite-block-argument.m (-32)
  • (removed) clang/test/Rewriter/rewrite-block-consts.mm (-18)
  • (removed) clang/test/Rewriter/rewrite-block-ivar-call.mm (-12)
  • (removed) clang/test/Rewriter/rewrite-block-literal-1.mm (-36)
  • (removed) clang/test/Rewriter/rewrite-block-literal.mm (-76)
  • (removed) clang/test/Rewriter/rewrite-block-pointer.mm (-106)
  • (removed) clang/test/Rewriter/rewrite-block-property.m (-14)
  • (removed) clang/test/Rewriter/rewrite-byref-in-nested-blocks.mm (-28)
  • (removed) clang/test/Rewriter/rewrite-byref-vars.mm (-56)
  • (removed) clang/test/Rewriter/rewrite-captured-nested-bvar.c (-34)
  • (removed) clang/test/Rewriter/rewrite-cast-ivar-access.mm (-51)
  • (removed) clang/test/Rewriter/rewrite-cast-ivar-modern-access.mm (-45)
  • (removed) clang/test/Rewriter/rewrite-cast-to-bool.mm (-16)
  • (removed) clang/test/Rewriter/rewrite-category-property.mm (-14)
  • (removed) clang/test/Rewriter/rewrite-constructor-init.mm (-23)
  • (removed) clang/test/Rewriter/rewrite-eh.m (-19)
  • (removed) clang/test/Rewriter/rewrite-elaborated-type.mm (-39)
  • (removed) clang/test/Rewriter/rewrite-extern-c.mm (-7)
  • (removed) clang/test/Rewriter/rewrite-foreach-1.m (-37)
  • (removed) clang/test/Rewriter/rewrite-foreach-2.m (-34)
  • (removed) clang/test/Rewriter/rewrite-foreach-3.m (-29)
  • (removed) clang/test/Rewriter/rewrite-foreach-4.m (-32)
  • (removed) clang/test/Rewriter/rewrite-foreach-5.m (-51)
  • (removed) clang/test/Rewriter/rewrite-foreach-6.m (-16)
  • (removed) clang/test/Rewriter/rewrite-foreach-7.m (-7)
  • (removed) clang/test/Rewriter/rewrite-foreach-in-block.mm (-31)
  • (removed) clang/test/Rewriter/rewrite-foreach-protocol-id.m (-28)
  • (removed) clang/test/Rewriter/rewrite-forward-class.m (-34)
  • (removed) clang/test/Rewriter/rewrite-forward-class.mm (-53)
  • (removed) clang/test/Rewriter/rewrite-function-decl.mm (-31)
  • (removed) clang/test/Rewriter/rewrite-implementation.mm (-15)
  • (removed) clang/test/Rewriter/rewrite-interface-locals.mm (-19)
  • (removed) clang/test/Rewriter/rewrite-ivar-use.m (-26)
  • (removed) clang/test/Rewriter/rewrite-line-directive.m (-17)
  • (removed) clang/test/Rewriter/rewrite-local-externs-in-block.mm (-22)
  • (removed) clang/test/Rewriter/rewrite-local-static-id.mm (-23)
  • (removed) clang/test/Rewriter/rewrite-message-expr.mm (-24)
  • (removed) clang/test/Rewriter/rewrite-modern-array-literal.mm (-26)
  • (removed) clang/test/Rewriter/rewrite-modern-atautoreleasepool.mm (-31)
  • (removed) clang/test/Rewriter/rewrite-modern-block-consts.mm (-20)
  • (removed) clang/test/Rewriter/rewrite-modern-block-ivar-call.mm (-17)
  • (removed) clang/test/Rewriter/rewrite-modern-block.mm (-63)
  • (removed) clang/test/Rewriter/rewrite-modern-captured-nested-bvar.mm (-34)
  • (removed) clang/test/Rewriter/rewrite-modern-catch.m (-31)
  • (removed) clang/test/Rewriter/rewrite-modern-class.mm (-70)
  • (removed) clang/test/Rewriter/rewrite-modern-container-literal.mm (-54)
  • (removed) clang/test/Rewriter/rewrite-modern-default-property-synthesis.mm (-79)
  • (removed) clang/test/Rewriter/rewrite-modern-extern-c-func-decl.mm (-91)
  • (removed) clang/test/Rewriter/rewrite-modern-ivar-access.mm (-98)
  • (removed) clang/test/Rewriter/rewrite-modern-ivar-use.mm (-25)
  • (removed) clang/test/Rewriter/rewrite-modern-ivars-1.mm (-124)
  • (removed) clang/test/Rewriter/rewrite-modern-ivars-2.mm (-99)
  • (removed) clang/test/Rewriter/rewrite-modern-ivars.mm (-64)
  • (removed) clang/test/Rewriter/rewrite-modern-nested-ivar.mm (-33)
  • (removed) clang/test/Rewriter/rewrite-modern-private-ivars.mm (-52)
  • (removed) clang/test/Rewriter/rewrite-modern-protocol-1.mm (-13)
  • (removed) clang/test/Rewriter/rewrite-modern-protocol.mm (-31)
  • (removed) clang/test/Rewriter/rewrite-modern-qualified-type.mm (-10)
  • (removed) clang/test/Rewriter/rewrite-modern-struct-ivar-1.mm (-47)
  • (removed) clang/test/Rewriter/rewrite-modern-struct-ivar.mm (-51)
  • (removed) clang/test/Rewriter/rewrite-modern-super.mm (-22)
  • (removed) clang/test/Rewriter/rewrite-modern-synchronized.m (-45)
  • (removed) clang/test/Rewriter/rewrite-modern-throw.m (-92)
  • (removed) clang/test/Rewriter/rewrite-modern-try-catch-finally.m (-63)
  • (removed) clang/test/Rewriter/rewrite-modern-try-finally.m (-40)
diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt
index 27e8095534a65c..7050746e3a0380 100644
--- a/clang/CMakeLists.txt
+++ b/clang/CMakeLists.txt
@@ -432,20 +432,11 @@ if(NOT LLVM_STATIC_LINK_CXX_STDLIB)
   set(HAVE_CLANG_REPL_SUPPORT ON)
 endif()
 
-option(CLANG_ENABLE_ARCMT "Build ARCMT." ON)
 option(CLANG_ENABLE_STATIC_ANALYZER
   "Include static analyzer in clang binary." ON)
 
 option(CLANG_ENABLE_PROTO_FUZZER "Build Clang protobuf fuzzer." OFF)
 
-if(NOT CLANG_ENABLE_STATIC_ANALYZER AND CLANG_ENABLE_ARCMT)
-  message(FATAL_ERROR "Cannot disable static analyzer while enabling ARCMT or Z3")
-endif()
-
-if(CLANG_ENABLE_ARCMT)
-  set(CLANG_ENABLE_OBJC_REWRITER ON)
-endif()
-
 # This option is a stop-gap, we should commit to removing this as
 # soon as possible. See discussion:
 # https://discourse.llvm.org/t/rationale-for-removing-versioned-libclang-middle-ground-to-keep-it-behind-option/
diff --git a/clang/cmake/caches/Android.cmake b/clang/cmake/caches/Android.cmake
index d5ca6b50d4ada7..c89e31f67cc9b1 100644
--- a/clang/cmake/caches/Android.cmake
+++ b/clang/cmake/caches/Android.cmake
@@ -2,7 +2,6 @@
 
 set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "")
 
-set(CLANG_ENABLE_ARCMT OFF CACHE BOOL "")
 set(CLANG_ENABLE_STATIC_ANALYZER OFF CACHE BOOL "")
 set(CLANG_TIDY_ENABLE_STATIC_ANALYZER OFF CACHE BOOL "")
 set(CLANG_VENDOR Android CACHE STRING "")
diff --git a/clang/cmake/caches/Fuchsia-stage2.cmake b/clang/cmake/caches/Fuchsia-stage2.cmake
index 784a883a3bf916..3db19c36acc581 100644
--- a/clang/cmake/caches/Fuchsia-stage2.cmake
+++ b/clang/cmake/caches/Fuchsia-stage2.cmake
@@ -44,7 +44,6 @@ set(CLANG_DEFAULT_LINKER lld CACHE STRING "")
 set(CLANG_DEFAULT_OBJCOPY llvm-objcopy CACHE STRING "")
 set(CLANG_DEFAULT_RTLIB compiler-rt CACHE STRING "")
 set(CLANG_DEFAULT_UNWINDLIB libunwind CACHE STRING "")
-set(CLANG_ENABLE_ARCMT OFF CACHE BOOL "")
 set(CLANG_ENABLE_STATIC_ANALYZER ON CACHE BOOL "")
 set(CLANG_PLUGIN_SUPPORT OFF CACHE BOOL "")
 
diff --git a/clang/cmake/caches/Fuchsia.cmake b/clang/cmake/caches/Fuchsia.cmake
index 07637cd0ed08f0..83336589da305d 100644
--- a/clang/cmake/caches/Fuchsia.cmake
+++ b/clang/cmake/caches/Fuchsia.cmake
@@ -84,7 +84,6 @@ set(CLANG_DEFAULT_LINKER lld CACHE STRING "")
 set(CLANG_DEFAULT_OBJCOPY llvm-objcopy CACHE STRING "")
 set(CLANG_DEFAULT_RTLIB compiler-rt CACHE STRING "")
 set(CLANG_DEFAULT_UNWINDLIB libunwind CACHE STRING "")
-set(CLANG_ENABLE_ARCMT OFF CACHE BOOL "")
 set(CLANG_ENABLE_STATIC_ANALYZER OFF CACHE BOOL "")
 set(CLANG_PLUGIN_SUPPORT OFF CACHE BOOL "")
 
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 3f58e64cf0ccbc..c168606af609ed 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -58,6 +58,8 @@ code bases.
   containing strict-aliasing violations. The new default behavior can be
   disabled using ``-fno-pointer-tbaa``.
 
+- The Objective-C ARC migrator (ARCMigrate) has been removed.
+
 C/C++ Language Potentially Breaking Changes
 -------------------------------------------
 
diff --git a/clang/include/clang-c/Index.h b/clang/include/clang-c/Index.h
index 8fc06328f0bcef..ee9e159b6dad76 100644
--- a/clang/include/clang-c/Index.h
+++ b/clang/include/clang-c/Index.h
@@ -5850,66 +5850,6 @@ CINDEX_LINKAGE const char *clang_EvalResult_getAsStr(CXEvalResult E);
  * Disposes the created Eval memory.
  */
 CINDEX_LINKAGE void clang_EvalResult_dispose(CXEvalResult E);
-/**
- * @}
- */
-
-/** \defgroup CINDEX_REMAPPING Remapping functions
- *
- * @{
- */
-
-/**
- * A remapping of original source files and their translated files.
- */
-typedef void *CXRemapping;
-
-/**
- * Retrieve a remapping.
- *
- * \param path the path that contains metadata about remappings.
- *
- * \returns the requested remapping. This remapping must be freed
- * via a call to \c clang_remap_dispose(). Can return NULL if an error occurred.
- */
-CINDEX_LINKAGE CXRemapping clang_getRemappings(const char *path);
-
-/**
- * Retrieve a remapping.
- *
- * \param filePaths pointer to an array of file paths containing remapping info.
- *
- * \param numFiles number of file paths.
- *
- * \returns the requested remapping. This remapping must be freed
- * via a call to \c clang_remap_dispose(). Can return NULL if an error occurred.
- */
-CINDEX_LINKAGE
-CXRemapping clang_getRemappingsFromFileList(const char **filePaths,
-                                            unsigned numFiles);
-
-/**
- * Determine the number of remappings.
- */
-CINDEX_LINKAGE unsigned clang_remap_getNumFiles(CXRemapping);
-
-/**
- * Get the original and the associated filename from the remapping.
- *
- * \param original If non-NULL, will be set to the original filename.
- *
- * \param transformed If non-NULL, will be set to the filename that the original
- * is associated with.
- */
-CINDEX_LINKAGE void clang_remap_getFilenames(CXRemapping, unsigned index,
-                                             CXString *original,
-                                             CXString *transformed);
-
-/**
- * Dispose the remapping.
- */
-CINDEX_LINKAGE void clang_remap_dispose(CXRemapping);
-
 /**
  * @}
  */
diff --git a/clang/include/clang/ARCMigrate/ARCMT.h b/clang/include/clang/ARCMigrate/ARCMT.h
deleted file mode 100644
index 2b950e3d2cc2bf..00000000000000
--- a/clang/include/clang/ARCMigrate/ARCMT.h
+++ /dev/null
@@ -1,130 +0,0 @@
-//===-- ARCMT.h - ARC Migration Rewriter ------------------------*- C++ -*-===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_ARCMIGRATE_ARCMT_H
-#define LLVM_CLANG_ARCMIGRATE_ARCMT_H
-
-#include "clang/ARCMigrate/FileRemapper.h"
-#include "clang/Basic/SourceLocation.h"
-#include "clang/Frontend/CompilerInvocation.h"
-
-namespace clang {
-  class ASTContext;
-  class DiagnosticConsumer;
-  class PCHContainerOperations;
-
-namespace arcmt {
-  class MigrationPass;
-
-/// Creates an AST with the provided CompilerInvocation but with these
-/// changes:
-///   -if a PCH/PTH is set, the original header is used instead
-///   -Automatic Reference Counting mode is enabled
-///
-/// It then checks the AST and produces errors/warning for ARC migration issues
-/// that the user needs to handle manually.
-///
-/// \param emitPremigrationARCErrors if true all ARC errors will get emitted
-/// even if the migrator can fix them, but the function will still return false
-/// if all ARC errors can be fixed.
-///
-/// \param plistOut if non-empty, it is the file path to store the plist with
-/// the pre-migration ARC diagnostics.
-///
-/// \returns false if no error is produced, true otherwise.
-bool
-checkForManualIssues(CompilerInvocation &CI, const FrontendInputFile &Input,
-                     std::shared_ptr<PCHContainerOperations> PCHContainerOps,
-                     DiagnosticConsumer *DiagClient,
-                     bool emitPremigrationARCErrors = false,
-                     StringRef plistOut = StringRef());
-
-/// Works similar to checkForManualIssues but instead of checking, it
-/// applies automatic modifications to source files to conform to ARC.
-///
-/// \returns false if no error is produced, true otherwise.
-bool
-applyTransformations(CompilerInvocation &origCI,
-                     const FrontendInputFile &Input,
-                     std::shared_ptr<PCHContainerOperations> PCHContainerOps,
-                     DiagnosticConsumer *DiagClient);
-
-/// Applies automatic modifications and produces temporary files
-/// and metadata into the \p outputDir path.
-///
-/// \param emitPremigrationARCErrors if true all ARC errors will get emitted
-/// even if the migrator can fix them, but the function will still return false
-/// if all ARC errors can be fixed.
-///
-/// \param plistOut if non-empty, it is the file path to store the plist with
-/// the pre-migration ARC diagnostics.
-///
-/// \returns false if no error is produced, true otherwise.
-bool migrateWithTemporaryFiles(
-    CompilerInvocation &origCI, const FrontendInputFile &Input,
-    std::shared_ptr<PCHContainerOperations> PCHContainerOps,
-    DiagnosticConsumer *DiagClient, StringRef outputDir,
-    bool emitPremigrationARCErrors, StringRef plistOut);
-
-/// Get the set of file remappings from the \p outputDir path that
-/// migrateWithTemporaryFiles produced.
-///
-/// \returns false if no error is produced, true otherwise.
-bool getFileRemappings(std::vector<std::pair<std::string,std::string> > &remap,
-                       StringRef outputDir,
-                       DiagnosticConsumer *DiagClient);
-
-/// Get the set of file remappings from a list of files with remapping
-/// info.
-///
-/// \returns false if no error is produced, true otherwise.
-bool getFileRemappingsFromFileList(
-                        std::vector<std::pair<std::string,std::string> > &remap,
-                        ArrayRef<StringRef> remapFiles,
-                        DiagnosticConsumer *DiagClient);
-
-typedef void (*TransformFn)(MigrationPass &pass);
-
-std::vector<TransformFn> getAllTransformations(LangOptions::GCMode OrigGCMode,
-                                               bool NoFinalizeRemoval);
-
-class MigrationProcess {
-  CompilerInvocation OrigCI;
-  std::shared_ptr<PCHContainerOperations> PCHContainerOps;
-  DiagnosticConsumer *DiagClient;
-  FileRemapper Remapper;
-
-public:
-  bool HadARCErrors;
-
-  MigrationProcess(CompilerInvocation &CI,
-                   std::shared_ptr<PCHContainerOperations> PCHContainerOps,
-                   DiagnosticConsumer *diagClient,
-                   StringRef outputDir = StringRef());
-
-  class RewriteListener {
-  public:
-    virtual ~RewriteListener();
-
-    virtual void start(ASTContext &Ctx) { }
-    virtual void finish() { }
-
-    virtual void insert(SourceLocation loc, StringRef text) { }
-    virtual void remove(CharSourceRange range) { }
-  };
-
-  bool applyTransform(TransformFn trans, RewriteListener *listener = nullptr);
-
-  FileRemapper &getRemapper() { return Remapper; }
-};
-
-} // end namespace arcmt
-
-}  // end namespace clang
-
-#endif
diff --git a/clang/include/clang/ARCMigrate/ARCMTActions.h b/clang/include/clang/ARCMigrate/ARCMTActions.h
deleted file mode 100644
index 714f4b33db446b..00000000000000
--- a/clang/include/clang/ARCMigrate/ARCMTActions.h
+++ /dev/null
@@ -1,76 +0,0 @@
-//===--- ARCMTActions.h - ARC Migrate Tool Frontend Actions -----*- C++ -*-===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_ARCMIGRATE_ARCMTACTIONS_H
-#define LLVM_CLANG_ARCMIGRATE_ARCMTACTIONS_H
-
-#include "clang/ARCMigrate/FileRemapper.h"
-#include "clang/Frontend/FrontendAction.h"
-#include <memory>
-
-namespace clang {
-namespace arcmt {
-
-class CheckAction : public WrapperFrontendAction {
-protected:
-  bool BeginInvocation(CompilerInstance &CI) override;
-
-public:
-  CheckAction(std::unique_ptr<FrontendAction> WrappedAction);
-};
-
-class ModifyAction : public WrapperFrontendAction {
-protected:
-  bool BeginInvocation(CompilerInstance &CI) override;
-
-public:
-  ModifyAction(std::unique_ptr<FrontendAction> WrappedAction);
-};
-
-class MigrateSourceAction : public ASTFrontendAction {
-  FileRemapper Remapper;
-protected:
-  bool BeginInvocation(CompilerInstance &CI) override;
-  std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
-                                                 StringRef InFile) override;
-};
-
-class MigrateAction : public WrapperFrontendAction {
-  std::string MigrateDir;
-  std::string PlistOut;
-  bool EmitPremigrationARCErrors;
-protected:
-  bool BeginInvocation(CompilerInstance &CI) override;
-
-public:
-  MigrateAction(std::unique_ptr<FrontendAction> WrappedAction,
-                StringRef migrateDir,
-                StringRef plistOut,
-                bool emitPremigrationARCErrors);
-};
-
-/// Migrates to modern ObjC syntax.
-class ObjCMigrateAction : public WrapperFrontendAction {
-  std::string MigrateDir;
-  unsigned    ObjCMigAction;
-  FileRemapper Remapper;
-  CompilerInstance *CompInst;
-public:
-  ObjCMigrateAction(std::unique_ptr<FrontendAction> WrappedAction,
-                    StringRef migrateDir, unsigned migrateAction);
-
-protected:
-  std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
-                                                 StringRef InFile) override;
-  bool BeginInvocation(CompilerInstance &CI) override;
-};
-
-}
-}
-
-#endif
diff --git a/clang/include/clang/ARCMigrate/FileRemapper.h b/clang/include/clang/ARCMigrate/FileRemapper.h
deleted file mode 100644
index afcee363516a21..00000000000000
--- a/clang/include/clang/ARCMigrate/FileRemapper.h
+++ /dev/null
@@ -1,84 +0,0 @@
-//===-- FileRemapper.h - File Remapping Helper ------------------*- C++ -*-===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_ARCMIGRATE_FILEREMAPPER_H
-#define LLVM_CLANG_ARCMIGRATE_FILEREMAPPER_H
-
-#include "clang/Basic/FileEntry.h"
-#include "clang/Basic/LLVM.h"
-#include "llvm/ADT/DenseMap.h"
-#include "llvm/ADT/STLExtras.h"
-#include "llvm/ADT/StringRef.h"
-#include <memory>
-#include <variant>
-
-namespace llvm {
-  class MemoryBuffer;
-  class MemoryBufferRef;
-}
-
-namespace clang {
-  class FileManager;
-  class DiagnosticsEngine;
-  class PreprocessorOptions;
-
-namespace arcmt {
-
-class FileRemapper {
-  // FIXME: Reuse the same FileManager for multiple ASTContexts.
-  std::unique_ptr<FileManager> FileMgr;
-
-  using Target = std::variant<FileEntryRef, llvm::MemoryBuffer *>;
-  using MappingsTy = llvm::DenseMap<FileEntryRef, Target>;
-  MappingsTy FromToMappings;
-
-  llvm::DenseMap<const FileEntry *, FileEntryRef> ToFromMappings;
-
-public:
-  FileRemapper();
-  ~FileRemapper();
-
-  bool initFromDisk(StringRef outputDir, DiagnosticsEngine &Diag,
-                    bool ignoreIfFilesChanged);
-  bool initFromFile(StringRef filePath, DiagnosticsEngine &Diag,
-                    bool ignoreIfFilesChanged);
-  bool flushToDisk(StringRef outputDir, DiagnosticsEngine &Diag);
-  bool flushToFile(StringRef outputPath, DiagnosticsEngine &Diag);
-
-  bool overwriteOriginal(DiagnosticsEngine &Diag,
-                         StringRef outputDir = StringRef());
-
-  void remap(StringRef filePath, std::unique_ptr<llvm::MemoryBuffer> memBuf);
-
-  void applyMappings(PreprocessorOptions &PPOpts) const;
-
-  /// Iterate through all the mappings.
-  void forEachMapping(
-      llvm::function_ref<void(StringRef, StringRef)> CaptureFile,
-      llvm::function_ref<void(StringRef, const llvm::MemoryBufferRef &)>
-          CaptureBuffer) const;
-
-  void clear(StringRef outputDir = StringRef());
-
-private:
-  void remap(FileEntryRef file, std::unique_ptr<llvm::MemoryBuffer> memBuf);
-  void remap(FileEntryRef file, FileEntryRef newfile);
-
-  OptionalFileEntryRef getOriginalFile(StringRef filePath);
-  void resetTarget(Target &targ);
-
-  bool report(const Twine &err, DiagnosticsEngine &Diag);
-
-  std::string getRemapInfoFile(StringRef outputDir);
-};
-
-} // end namespace arcmt
-
-}  // end namespace clang
-
-#endif
diff --git a/clang/include/clang/Basic/DiagnosticCommonKinds.td b/clang/include/clang/Basic/DiagnosticCommonKinds.td
index f4a155bb00bb37..f26c906b46447a 100644
--- a/clang/include/clang/Basic/DiagnosticCommonKinds.td
+++ b/clang/include/clang/Basic/DiagnosticCommonKinds.td
@@ -402,16 +402,6 @@ def note_file_misc_sloc_usage : Note<
 def err_module_format_unhandled : Error<
   "no handler registered for module format '%0'">, DefaultFatal;
 
-// TransformActions
-// TODO: Use a custom category name to distinguish rewriter errors.
-def err_mt_message : Error<"[rewriter] %0">, SuppressInSystemHeader;
-def warn_mt_message : Warning<"[rewriter] %0">;
-def note_mt_message : Note<"[rewriter] %0">;
-
-// ARCMigrate
-def warn_arcmt_nsalloc_realloc : Warning<"[rewriter] call returns pointer to GC managed memory; it will become unmanaged in ARC">;
-def err_arcmt_nsinvocation_ownership : Error<"NSInvocation's %0 is not safe to be used with an object with ownership other than __unsafe_unretained">;
-
 // API notes
 def err_apinotes_message : Error<"%0">;
 def warn_apinotes_message : Warning<"%0">, InGroup<DiagGroup<"apinotes">>;
diff --git a/clang/include/clang/Config/config.h.cmake b/clang/include/clang/Config/config.h.cmake
index 27ed69e21562bf..805721237609b1 100644
--- a/clang/include/clang/Config/config.h.cmake
+++ b/clang/include/clang/Config/config.h.cmake
@@ -76,8 +76,6 @@
 #cmakedefine01 PPC_LINUX_DEFAULT_IEEELONGDOUBLE
 
 /* Enable each functionality of modules */
-#cmakedefine01 CLANG_ENABLE_ARCMT
-#cmakedefine01 CLANG_ENABLE_OBJC_REWRITER
 #cmakedefine01 CLANG_ENABLE_STATIC_ANALYZER
 
 /* Spawn a new process clang.exe for the CC1 tool invocation, when necessary */
diff --git a/clang/include/clang/Driver/Action.h b/clang/include/clang/Driver/Action.h
index 04fa8b01b418f8..bb9444d2e9ccdc 100644
--- a/clang/include/clang/Driver/Action.h
+++ b/clang/include/clang/Driver/Action.h
@@ -60,7 +60,6 @@ class Action {
     PrecompileJobClass,
     ExtractAPIJobClass,
     AnalyzeJobClass,
-    MigrateJobClass,
     CompileJobClass,
     BackendJobClass,
     AssembleJobClass,
@@ -459,17 +458,6 @@ class AnalyzeJobAction : public JobAction {
   }
 };
 
-class MigrateJobAction : public JobAction {
-  void anchor() override;
-
-public:
-  MigrateJobAction(Action *Input, types::ID OutputType);
-
-  static bool classof(const Action *A) {
-    return A->getKind() == MigrateJobClass;
-  }
-};
-
 class CompileJobAction : public JobAction {
   void anchor() override;
 
diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td
index a89a4e8f8ec985..642d2a1268a002 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -692,20 +692,6 @@ def ccc_print_phases : Flag<["-"], "ccc-print-phases">,
 def ccc_print_bindings : Flag<["-"], "ccc-print-bindings">, InternalDebugOpt,
   HelpText<"Show bindings of tools to actions">;
 
-def ccc_arcmt_check : Flag<["-"], "ccc-arcmt-check">, InternalDriverOpt,
-  HelpText<"Check for ARC migration issues that need manual handling">;
-def ccc_arcmt_modify : Flag<["-"], "ccc-arcmt-modify">, InternalDriverOpt,
-  HelpText<"Apply modifications to files to conform to ARC">;
-def ccc_arcmt_migrate : Separate<["-"], "ccc-arcmt-migrate">, InternalDriverOpt,
-  HelpText<"Apply modifications and produces temporary files that conform to ARC">;
-def arcmt_migrate_report_output : Separate<["-"], "arcmt-migrate-report-output">,
-  HelpText<"Output path for the plist report">,
-  Visibility<[ClangOption, CC1Option]>,
-  MarshallingInfoString<FrontendOpts<"ARCMTMigrateReportOut">>;
-def arcmt_migrate_emit_arc_errors : Flag<["-"], "arcmt-migrate-emit-errors">,
-  HelpText<"Emit ARC errors even if the migrator can fix them">,
-  Visibility<[ClangOption, CC1Option]>,
-  MarshallingInfoFlag<FrontendOpts<"ARCMTMigrateEmitARCErrors">>;
 def gen_reproducer_eq: Joined<["-"], "gen-reproducer=">,
   Flags<[NoArgumentUnused]>, Visibility<[ClangOption, CLOption, DXCOption]>,
   HelpText<"Emit reproducer on (option: off, crash (default), error, always)">;
@@ -721,87 +707,6 @@ def no_round_trip_args : Flag<["-"], "no-round-trip-args">,
   Visibility<[CC1Option]>,
   HelpText<"Disable command line arguments round-trip.">;
 
-def _migrate : Flag<["--"], "migrate">, Flags<[NoXarchOption]>,
-  HelpText<"Run the migrator">;
-def ccc_objcmt_migrate : Separate<["-"], "ccc-objcmt-migrate">,
-  InternalDriverOpt,
-  HelpText<"Apply modifications and produces temporary files to migrate to "
-   "modern ObjC syntax">;
-
-def objcmt_migrate_literals : Flag<["-"], "objcmt-migrate-literals">,
-  Visibility<[ClangOption, CC1Option]>,
-  HelpText<"Enable migration to modern ObjC literals">,
...
[truncated]

@rjmccall
Copy link
Contributor

rjmccall commented Dec 9, 2024

test/Rewrite is for the Objective-C => MSVC-compatible C++ rewriter (-rewrite-objc), which is a different feature. That feature might also be obsolete, but we haven't signed off on that yet AFAIK.

@Sirraide
Copy link
Member Author

Sirraide commented Dec 9, 2024

test/Rewrite is for the Objective-C => MSVC-compatible C++ rewriter (-rewrite-objc), which is a different feature. That feature might also be obsolete, but we haven't signed off on that yet AFAIK.

I see, we were talking about this earlier today and weren’t quite sure about that part. I presume we should keep that around for now then. Also, to clarify, does that include clang/lib/Frontend/Rewrite/RewriteModernObjC.cpp and clang/lib/Frontend/Rewrite/RewriteModernObjC.cpp?

@rjmccall
Copy link
Contributor

rjmccall commented Dec 9, 2024

Yes, I believe that's essentially just a version of the rewriter that uses a different ABI (it tries to match the non-fragile Apple ObjC runtime rather than the fragile one).

@Sirraide
Copy link
Member Author

Ok, I’ve gone through the changes again and I think I managed to exclude anything pertaining to the rewriter from the removal.

@Sirraide
Copy link
Member Author

I’m not sure I got the CMake/Lit changes right though because I’m not really familiar w/ the CMake part of LLVM in general.

@MaskRay
Copy link
Member

MaskRay commented Jan 17, 2025

Thanks! I use -DCLANG_ENABLE_ARCMT=off to skip building some files...

@Sirraide Sirraide requested review from petrhosek and Endilll January 17, 2025 07:20
AnthonyLatsis added a commit to AnthonyLatsis/swift that referenced this pull request May 4, 2025
With `ARCMigrate` and `arcmt-test` removed from clang in
llvm/llvm-project#119269 and the new code
migration experience under way (see
swiftlang/swift-evolution#2673), these options
are no longer relevant nor known to be in use. They were introduced
long ago to support automatic code migration up to Swift 4.

For now, turn them into a no-op and emit a obsoletion warning.
AnthonyLatsis added a commit to AnthonyLatsis/swift that referenced this pull request May 4, 2025
`ARCMigrate` and `arcmt-test` were removed from clang in
llvm/llvm-project#119269.
AnthonyLatsis added a commit to AnthonyLatsis/swift that referenced this pull request May 4, 2025
With `ARCMigrate` and `arcmt-test` removed from clang in
llvm/llvm-project#119269 and the new code
migration experience under way (see
swiftlang/swift-evolution#2673), these options
are no longer relevant nor known to be in use. They were introduced
long ago to support fix-it application in Xcode.

For now, turn them into a no-op and emit a obsoletion warning.
AnthonyLatsis added a commit to AnthonyLatsis/swift that referenced this pull request May 6, 2025
With `ARCMigrate` and `arcmt-test` removed from clang in
llvm/llvm-project#119269 and the new code
migration experience under way (see
swiftlang/swift-evolution#2673), these options
are no longer relevant nor known to be in use. They were introduced
long ago to support fix-it application in Xcode.

For now, turn them into a no-op and emit a obsoletion warning.
AnthonyLatsis added a commit to AnthonyLatsis/swift that referenced this pull request May 7, 2025
With `ARCMigrate` and `arcmt-test` removed from clang in
llvm/llvm-project#119269 and the new code
migration experience under way (see
swiftlang/swift-evolution#2673), these options
are no longer relevant nor known to be in use. They were introduced
long ago to support fix-it application in Xcode.

For now, turn them into a no-op and emit a obsoletion warning.
AnthonyLatsis added a commit to AnthonyLatsis/swift that referenced this pull request May 7, 2025
…path`"

With `ARCMigrate` and `arcmt-test` removed from clang in
llvm/llvm-project#119269 and the new code
migration experience under way (see
swiftlang/swift-evolution#2673), these options
are no longer relevant nor known to be in use. They were introduced
long ago to support fix-it application in Xcode.

For now, turn them into a no-op and emit a obsoletion warning.

(cherry picked from commit 46c394788a84d5932289c71274dd32ea2d61d9dc)
Catfish-Man pushed a commit to swiftlang/swift that referenced this pull request May 15, 2025
With `ARCMigrate` and `arcmt-test` removed from clang in
llvm/llvm-project#119269 and the new code
migration experience under way (see
swiftlang/swift-evolution#2673), these options
are no longer relevant nor known to be in use. They were introduced
long ago to support fix-it application in Xcode.

For now, turn them into a no-op and emit a obsoletion warning.
@efriedma-quic
Copy link
Collaborator

This is causing the libclang ABI test on the 21.x release branch to fail; see https://github.com/llvm/llvm-project/actions/runs/16300425208/job/46036741411?pr=148907 .

@Sirraide
Copy link
Member Author

This is causing the libclang ABI test on the 21.x release branch to fail; see https://github.com/llvm/llvm-project/actions/runs/16300425208/job/46036741411?pr=148907 .

Er, I’m a bit confused candidly—did you happen to comment on the wrong pr maybe? Because this was merged months ago, and that link also points to a completely different patch from what I can tell...

@efriedma-quic
Copy link
Collaborator

The checker only runs on release branches, so nobody spotted it until now.

This patch removes the following five symbols from libclang, which the automation is detecting as an ABI break:

clang_getRemappings ( ) @@ LLVM_NOVERSION
clang_getRemappingsFromFileList ( ) @@ LLVM_NOVERSION
clang_remap_dispose ( ) @@ LLVM_NOVERSION
clang_remap_getFilenames ( ) @@ LLVM_NOVERSION
clang_remap_getNumFiles ( ) @@ LLVM_NOVERSION

@Sirraide
Copy link
Member Author

The checker only runs on release branches, so nobody spotted it until now.

Ah, I see.

This patch removes the following five symbols from libclang, which the automation is detecting as an ABI break:

I remember removing those; iirc the underlying functionality that was used to implement them no longer exists. I don’t really interact w/ libclang much so I’m not sure how we normally deal w/ this.

@efriedma-quic
Copy link
Collaborator

I don't know that we've had to deal with the underling functionality for anything in libclang getting removed before; we're usually pretty conservative with what we add in the first place.

Maybe we should stub out the methods so they always fail?

@Sirraide
Copy link
Member Author

Maybe we should stub out the methods so they always fail?

As in make them do nothing essentially (i.e. return NULL etc.) or as in report a fatal error and exit?

@efriedma-quic
Copy link
Collaborator

Return NULL, I guess; that's how the error handling for those methods used to work.

@Sirraide
Copy link
Member Author

Return NULL, I guess; that's how the error handling for those methods used to work.

Yeah, I was just looking at what used to be there, and we’d just print that it isn’t enabled and return NULL; I guess we can add them back and print ‘ARCMigrate has been removed from Clang’ or sth like that.

@Sirraide
Copy link
Member Author

Return NULL, I guess; that's how the error handling for those methods used to work.

Yeah, I was just looking at what used to be there, and we’d just print that it isn’t enabled and return NULL; I guess we can add them back and print ‘ARCMigrate has been removed from Clang’ or sth like that.

I’ll open a pr for that

@akyrtzi
Copy link
Contributor

akyrtzi commented Jul 15, 2025

These were most likely only used by Xcode and the relevant functionality has been removed as discussed before. I would suggest considering to keep the functions removed and update the ABI check test.

@Sirraide
Copy link
Member Author

@AaronBallman Do you happen to know if there’s precedent for this?

@AaronBallman
Copy link
Collaborator

@AaronBallman Do you happen to know if there’s precedent for this?

We recently started documenting our guarantees, and I think this falls under "Removing an explicitly deprecated API after a suitably long deprecation period." So I think the right path forward is to add stub APIs which fail gracefully, mark the APIs as deprecated and explain that the underlying functionality has been removed so these APIs only exist for ABI compatibility, and then we can remove them in a few years. Do others think that's a reasonable plan?

@Sirraide
Copy link
Member Author

Sirraide commented Jul 16, 2025

I’ve opened #149079 for this.

Sirraide added a commit that referenced this pull request Jul 16, 2025
…149079)

For more context, see
#119269 (comment),
but briefly, when removing ARCMigrate, I also removed some symbols in
libclang, which constitutes an ABI break that we don’t want, so this pr
reintroduces the removed symbols; the declarations are marked as
deprecated for future removal, and the implementations print an error
and do nothing, which is what we used to do when ARCMigrate was
disabled.
llvm-sync bot pushed a commit to arm/arm-toolchain that referenced this pull request Jul 16, 2025
…ABI break (#149079)

For more context, see
llvm/llvm-project#119269 (comment),
but briefly, when removing ARCMigrate, I also removed some symbols in
libclang, which constitutes an ABI break that we don’t want, so this pr
reintroduces the removed symbols; the declarations are marked as
deprecated for future removal, and the implementations print an error
and do nothing, which is what we used to do when ARCMigrate was
disabled.
tru pushed a commit to llvmbot/llvm-project that referenced this pull request Jul 17, 2025
…lvm#149079)

For more context, see
llvm#119269 (comment),
but briefly, when removing ARCMigrate, I also removed some symbols in
libclang, which constitutes an ABI break that we don’t want, so this pr
reintroduces the removed symbols; the declarations are marked as
deprecated for future removal, and the implementations print an error
and do nothing, which is what we used to do when ARCMigrate was
disabled.

(cherry picked from commit 1600450)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bazel "Peripheral" support tier build system: utils/bazel clang:as-a-library libclang and C++ API clang:driver 'clang' and 'clang++' user-facing binaries. Not 'clang-cl' clang:frontend Language frontend issues, e.g. anything involving "Sema" clang:static analyzer clang Clang issues not falling into any other category flang Flang issues not falling into any other category objective-c
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants