I reverted this, the test fails for me locally. Does -arch work on non-Mac targets?
On Mon, Nov 18, 2019 at 10:39 AM Francis Visoiu Mistrih via cfe-commits < cfe-commits@lists.llvm.org> wrote: > > Author: Francis Visoiu Mistrih > Date: 2019-11-18T10:38:10-08:00 > New Revision: b4e2b112b58154a89171df39dae80044865ff4ff > > URL: > https://github.com/llvm/llvm-project/commit/b4e2b112b58154a89171df39dae80044865ff4ff > DIFF: > https://github.com/llvm/llvm-project/commit/b4e2b112b58154a89171df39dae80044865ff4ff.diff > > LOG: [Remarks][Driver] Use different remark files when targeting multiple > architectures > > When the driver is targeting multiple architectures at once, for things > like Universal Mach-Os, we need to emit different remark files for each > cc1 invocation to avoid overwriting the files from a different > invocation. > > For example: > > $ clang -c -o foo.o -fsave-optimization-record -arch x86_64 -arch x86_64h > > will create two remark files: > > * foo-x86_64.opt.yaml > * foo-x86_64h.opt.yaml > > Added: > > > Modified: > clang/lib/Driver/ToolChains/Clang.cpp > clang/test/Driver/opt-record.c > > Removed: > > > > > ################################################################################ > diff --git a/clang/lib/Driver/ToolChains/Clang.cpp > b/clang/lib/Driver/ToolChains/Clang.cpp > index 2b1c24275e3d..f5591c48d4e0 100644 > --- a/clang/lib/Driver/ToolChains/Clang.cpp > +++ b/clang/lib/Driver/ToolChains/Clang.cpp > @@ -5403,6 +5403,8 @@ void Clang::ConstructJob(Compilation &C, const > JobAction &JA, > if (A) { > CmdArgs.push_back(A->getValue()); > } else { > + bool hasMultipleArchs = > + Args.getAllArgValues(options::OPT_arch).size() > 1; > SmallString<128> F; > > if (Args.hasArg(options::OPT_c) || Args.hasArg(options::OPT_S)) { > @@ -5427,6 +5429,22 @@ void Clang::ConstructJob(Compilation &C, const > JobAction &JA, > } > } > > + // If we're having more than one "-arch", we should name the files > + // > diff erently so that every cc1 invocation writes to a > diff erent file. > + // We're doing that by appending "-<arch>" with "<arch>" being the > arch > + // name from the triple. > + if (hasMultipleArchs) { > + // First, remember the extension. > + SmallString<64> OldExtension = llvm::sys::path::extension(F); > + // then, remove it. > + llvm::sys::path::replace_extension(F, ""); > + // attach -<arch> to it. > + F += "-"; > + F += Triple.getArchName(); > + // put back the extension. > + llvm::sys::path::replace_extension(F, OldExtension); > + } > + > std::string Extension = "opt."; > if (const Arg *A = > Args.getLastArg(options::OPT_fsave_optimization_record_EQ)) > > diff --git a/clang/test/Driver/opt-record.c > b/clang/test/Driver/opt-record.c > index 062d0acc17da..d8d2aa53ed40 100644 > --- a/clang/test/Driver/opt-record.c > +++ b/clang/test/Driver/opt-record.c > @@ -18,6 +18,7 @@ > // RUN: %clang -### -S -o FOO -fsave-optimization-record > -fsave-optimization-record=some-format %s 2>&1 | FileCheck %s > -check-prefix=CHECK-EQ-FORMAT > // RUN: %clang -### -S -o FOO -fsave-optimization-record=some-format %s > 2>&1 | FileCheck %s -check-prefix=CHECK-EQ-FORMAT > // RUN: %clang -### -S -o FOO -fsave-optimization-record=some-format > -fno-save-optimization-record %s 2>&1 | FileCheck %s > --check-prefix=CHECK-FOPT-DISABLE-FORMAT > +// RUN: %clang -### -S -o FOO -fsave-optimization-record -arch x86_64 > -arch x86_64h %s 2>&1 | FileCheck %s --check-prefix=CHECK-MULTIPLE-ARCH > // > // CHECK: "-cc1" > // CHECK: "-opt-record-file" "FOO.opt.yaml" > @@ -41,3 +42,8 @@ > // CHECK-EQ-FORMAT: "-opt-record-format" "some-format" > > // CHECK-FOPT-DISABLE-FORMAT-NOT: "-fno-save-optimization-record" > + > +// CHECK-MULTIPLE-ARCH: "-cc1" > +// CHECK-MULTIPLE-ARCH: "-opt-record-file" "FOO-x86_64.opt.yaml" > +// CHECK-MULTIPLE-ARCH: "-cc1" > +// CHECK-MULTIPLE-ARCH: "-opt-record-file" "FOO-x86_64h.opt.yaml" > > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits