Skip to content
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

[Clang] Remove ARCMigrate #119269

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
@cor3ntin
Copy link
Contributor

@AaronBallman

@Sirraide
Copy link
Member Author

ping

Copy link
Contributor

@cor3ntin cor3ntin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Collaborator

@AaronBallman AaronBallman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM but please wait for @rjmccall to sign off before landing.

Copy link
Contributor

@rjmccall rjmccall left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks right to me, but let me tag in @akyrtzi just to make his own pass over this.

@Sirraide Sirraide merged commit c4a0197 into llvm:main Jan 30, 2025
11 checks passed
@llvm-ci
Copy link
Collaborator

llvm-ci commented Jan 30, 2025

LLVM Buildbot has detected a new failure on builder flang-aarch64-dylib running on linaro-flang-aarch64-dylib while building clang,flang,llvm,utils at step 5 "build-unified-tree".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/50/builds/9611

Here is the relevant piece of the build log for the reference
Step 5 (build-unified-tree) failure: build (failure)
...
1244.407 [1460/10/5333] Building CXX object tools/mlir/lib/Dialect/Tensor/IR/CMakeFiles/obj.MLIRTensorDialect.dir/TensorOps.cpp.o
1244.410 [1460/9/5334] Building CXX object tools/mlir/lib/Dialect/Tensor/Transforms/CMakeFiles/obj.MLIRTensorTransforms.dir/ReshapePatterns.cpp.o
1244.416 [1460/8/5335] Building CXX object tools/mlir/tools/mlir-rewrite/CMakeFiles/mlir-rewrite.dir/mlir-rewrite.cpp.o
1244.445 [1460/7/5336] Building CXX object tools/mlir/lib/Dialect/Tensor/Transforms/CMakeFiles/obj.MLIRTensorTransforms.dir/ExtractSliceFromReshapeUtils.cpp.o
1244.456 [1460/6/5337] Building CXX object tools/mlir/test/lib/IR/CMakeFiles/MLIRTestIR.dir/TestDiagnostics.cpp.o
1244.463 [1460/5/5338] Building CXX object tools/mlir/lib/Dialect/Tensor/Transforms/CMakeFiles/obj.MLIRTensorTransforms.dir/EmptyOpPatterns.cpp.o
1244.475 [1460/4/5339] Building CXX object tools/mlir/lib/Dialect/Tensor/Transforms/CMakeFiles/obj.MLIRTensorTransforms.dir/RewriteAsConstant.cpp.o
1244.483 [1460/3/5340] Building CXX object tools/mlir/lib/Dialect/Tensor/Transforms/CMakeFiles/obj.MLIRTensorTransforms.dir/IndependenceTransforms.cpp.o
1244.495 [1460/2/5341] Building CXX object tools/mlir/lib/Dialect/Tensor/Transforms/CMakeFiles/obj.MLIRTensorTransforms.dir/FoldTensorSubsetOps.cpp.o
1252.873 [1460/1/5342] Building CXX object tools/mlir/test/lib/IR/CMakeFiles/MLIRTestIR.dir/TestClone.cpp.o
FAILED: tools/mlir/test/lib/IR/CMakeFiles/MLIRTestIR.dir/TestClone.cpp.o 
/usr/local/bin/c++ -DGTEST_HAS_RTTI=0 -DMLIR_INCLUDE_TESTS -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/tcwg-buildbot/worker/flang-aarch64-dylib/build/tools/mlir/test/lib/IR -I/home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/mlir/test/lib/IR -I/home/tcwg-buildbot/worker/flang-aarch64-dylib/build/tools/mlir/include -I/home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/mlir/include -I/home/tcwg-buildbot/worker/flang-aarch64-dylib/build/include -I/home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/llvm/include -I/home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/mlir/test/lib/IR/../Dialect/Test -I/home/tcwg-buildbot/worker/flang-aarch64-dylib/build/tools/mlir/test/lib/IR/../Dialect/Test -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wundef -Werror=mismatched-tags -O3 -DNDEBUG -std=c++17  -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -MD -MT tools/mlir/test/lib/IR/CMakeFiles/MLIRTestIR.dir/TestClone.cpp.o -MF tools/mlir/test/lib/IR/CMakeFiles/MLIRTestIR.dir/TestClone.cpp.o.d -o tools/mlir/test/lib/IR/CMakeFiles/MLIRTestIR.dir/TestClone.cpp.o -c /home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/mlir/test/lib/IR/TestClone.cpp
In file included from /home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/mlir/test/lib/IR/TestClone.cpp:9:
/home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/mlir/test/lib/IR/../Dialect/Test/TestOps.h:148:10: fatal error: 'TestOps.h.inc' file not found
  148 | #include "TestOps.h.inc"
      |          ^~~~~~~~~~~~~~~
1 error generated.
ninja: build stopped: subcommand failed.

@@ -22,7 +22,7 @@ config.host_cxx = "@CMAKE_CXX_COMPILER@"
config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
config.have_zlib = @LLVM_ENABLE_ZLIB@
config.have_zstd = @LLVM_ENABLE_ZSTD@
config.clang_arcmt = @CLANG_ENABLE_ARCMT@
config.clang_objc_rewriter = "@CLANG_ENABLE_OBJC_REWRITER@" == "ON"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of this, please add CLANG_ENABLE_OBJC_REWRITER to the llvm_canonicalize_cmake_booleans list at the top of clang/test/CMakeLists.txt and do clang_objc_rewriter = @CLANG_ENABLE_OBJC_REWRITER@ here.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was wondering what the right way of doing this was; I’ll make a new pr for that

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Opened #125117.

@AaronBallman
Copy link
Collaborator

Thank you for this; this was a fantastic cleanup of tech debt!

@llvm-ci
Copy link
Collaborator

llvm-ci commented Jan 30, 2025

LLVM Buildbot has detected a new failure on builder clang-s390x-linux-lnt running on systemz-1 while building clang,flang,llvm,utils at step 7 "ninja check 1".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/136/builds/2593

Here is the relevant piece of the build log for the reference
Step 7 (ninja check 1) failure: stage 1 checked (failure)
******************** TEST 'libFuzzer-s390x-default-Linux :: fuzzer-timeout.test' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
RUN: at line 1: /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/./bin/clang    -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta   --driver-mode=g++ -O2 -gline-tables-only -fsanitize=address,fuzzer -I/home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/lib/fuzzer  /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/TimeoutTest.cpp -o /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest
+ /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/./bin/clang -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta --driver-mode=g++ -O2 -gline-tables-only -fsanitize=address,fuzzer -I/home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/lib/fuzzer /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/TimeoutTest.cpp -o /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest
RUN: at line 2: /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/./bin/clang    -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta   --driver-mode=g++ -O2 -gline-tables-only -fsanitize=address,fuzzer -I/home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/lib/fuzzer  /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/TimeoutEmptyTest.cpp -o /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutEmptyTest
+ /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/./bin/clang -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta --driver-mode=g++ -O2 -gline-tables-only -fsanitize=address,fuzzer -I/home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/lib/fuzzer /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/TimeoutEmptyTest.cpp -o /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutEmptyTest
RUN: at line 3: not  /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest -timeout=1 2>&1 | FileCheck /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/fuzzer-timeout.test --check-prefix=TimeoutTest
+ not /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest -timeout=1
+ FileCheck /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/fuzzer-timeout.test --check-prefix=TimeoutTest
/home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/fuzzer-timeout.test:7:14: error: TimeoutTest: expected string not found in input
TimeoutTest: #0
             ^
<stdin>:19:44: note: scanning from here
==1968037== ERROR: libFuzzer: timeout after 1 seconds
                                           ^
<stdin>:24:104: note: possible intended match here
AddressSanitizer: CHECK failed: asan_report.cpp:199 "((current_error_.kind)) == ((kErrorKindInvalid))" (0x1, 0x0) (tid=1968037)
                                                                                                       ^

Input file: <stdin>
Check file: /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/fuzzer-timeout.test

-dump-input=help explains the following input dump.

Input was:
<<<<<<
           .
           .
           .
          14: MS: 5 InsertByte-CrossOver-InsertByte-EraseBytes-EraseBytes-; base unit: adc83b19e793491b1c6ea0fd8b46cd9f32e592fc 
          15: 0x48,0x69,0x21, 
          16: Hi! 
          17: artifact_prefix='./'; Test unit written to ./timeout-c0a0ad26a634840c67a210fefdda76577b03a111 
          18: Base64: SGkh 
          19: ==1968037== ERROR: libFuzzer: timeout after 1 seconds 
check:7'0                                                X~~~~~~~~~~ error: no match found
          20: AddressSanitizer:DEADLYSIGNAL 
check:7'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          21: ================================================================= 
check:7'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          22: AddressSanitizer:DEADLYSIGNAL 
check:7'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          23: ================================================================= 
check:7'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          24: AddressSanitizer: CHECK failed: asan_report.cpp:199 "((current_error_.kind)) == ((kErrorKindInvalid))" (0x1, 0x0) (tid=1968037) 
check:7'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:7'1                                                                                                            ?                         possible intended match
...

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.

9 participants