diff options
-rw-r--r-- | lib/Driver/Tools.cpp | 12 | ||||
-rw-r--r-- | test/ARCMT/driver-migrate.m | 9 |
2 files changed, 21 insertions, 0 deletions
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 1e8dcb7090..648da87c8e 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -3372,6 +3372,18 @@ void darwin::Link::ConstructJob(Compilation &C, const JobAction &JA, // more information. ArgStringList CmdArgs; + /// Hack(tm) to ignore linking errors when we are doing ARC migration. + if (Args.hasArg(options::OPT_ccc_arcmt_check, + options::OPT_ccc_arcmt_migrate)) { + for (ArgList::const_iterator I = Args.begin(), E = Args.end(); I != E; ++I) + (*I)->claim(); + const char *Exec = + Args.MakeArgString(getToolChain().GetProgramPath("touch")); + CmdArgs.push_back(Output.getFilename()); + C.addCommand(new Command(JA, *this, Exec, CmdArgs)); + return; + } + // I'm not sure why this particular decomposition exists in gcc, but // we follow suite for ease of comparison. AddLinkArgs(C, Args, CmdArgs); diff --git a/test/ARCMT/driver-migrate.m b/test/ARCMT/driver-migrate.m index e283857cb5..d1350f7233 100644 --- a/test/ARCMT/driver-migrate.m +++ b/test/ARCMT/driver-migrate.m @@ -1,3 +1,12 @@ // RUN: %clang -### -ccc-arcmt-migrate /foo/bar -fsyntax-only %s 2>&1 | FileCheck %s // CHECK: "-arcmt-migrate" "-arcmt-migrate-directory" "{{[^"]*}}/foo/bar" + +// RUN: touch %t.o +// RUN: %clang -ccc-arcmt-check -ccc-host-triple i386-apple-darwin9 -### %t.o 2> %t.log +// RUN: FileCheck -check-prefix=LINK %s < %t.log +// RUN: %clang -ccc-arcmt-migrate /foo/bar -ccc-host-triple i386-apple-darwin9 -### %t.o 2> %t.log +// RUN: FileCheck -check-prefix=LINK %s < %t.log + +// LINK-NOT: ld" +// LINK: touch" |