diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index a16469f931884..1a74a3a1e4cc1 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -680,6 +680,12 @@ void tools::addLTOOptions(const ToolChain &ToolChain, const ArgList &Args, else if (IsThinLTO && IsOSAIX) CmdArgs.push_back(Args.MakeArgString(Twine("-bdbg:thinlto"))); + // Matrix intrinsic lowering happens at link time with ThinLTO. Enable + // LowerMatrixIntrinsicsPass, which is transitively called by + // buildThinLTODefaultPipeline under EnableMatrix. + if (IsThinLTO && Args.hasArg(options::OPT_fenable_matrix)) + CmdArgs.push_back( + Args.MakeArgString(Twine(PluginOptPrefix) + "-enable-matrix")); StringRef Parallelism = getLTOParallelism(Args, D); if (!Parallelism.empty()) diff --git a/clang/test/Driver/matrix.c b/clang/test/Driver/matrix.c new file mode 100644 index 0000000000000..15b44ce5a4ec1 --- /dev/null +++ b/clang/test/Driver/matrix.c @@ -0,0 +1,8 @@ +// RUN: touch %t.o +// RUN: %clang -flto=thin -fenable-matrix %t.o -### --target=powerpc64-ibm-aix-xcoff 2>&1 \ +// RUN: | FileCheck %s -check-prefix=CHECK-THINLTO-MATRIX-AIX +// CHECK-THINLTO-MATRIX-AIX: "-bplugin_opt:-enable-matrix" + +// RUN: %clang -flto=thin -fenable-matrix %t.o -### --target=x86_64-unknown-linux 2>&1 \ +// RUN: | FileCheck %s -check-prefix=CHECK-THINLTO-MATRIX +// CHECK-THINLTO-MATRIX: "-plugin-opt=-enable-matrix"