This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG66af90b46e1f: [darwin][driver] Pass through -global-isel LLVM flags to ld. (authored by aemerson).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D99126/new/ https://reviews.llvm.org/D99126 Files: clang/lib/Driver/ToolChains/Darwin.cpp clang/test/Driver/darwin-ld-lto.c Index: clang/test/Driver/darwin-ld-lto.c =================================================================== --- clang/test/Driver/darwin-ld-lto.c +++ clang/test/Driver/darwin-ld-lto.c @@ -30,3 +30,11 @@ // THIN_LTO_OBJECT_PATH: {{ld(.exe)?"}} // THIN_LTO_OBJECT_PATH-SAME: "-object_path_lto" // THIN_LTO_OBJECT_PATH-SAME: {{thinlto\-[a-zA-Z0-9_]+}} + + +// Check that we pass through -fglobal-isel flags to libLTO. +// RUN: %clang -target arm64-apple-darwin %s -flto -fglobal-isel -### 2>&1 | \ +// RUN: FileCheck --check-prefix=GISEL %s +// GISEL: {{ld(.exe)?"}} +// GISEL: "-mllvm" "-global-isel" +// GISEL: "-mllvm" "-global-isel-abort=0" Index: clang/lib/Driver/ToolChains/Darwin.cpp =================================================================== --- clang/lib/Driver/ToolChains/Darwin.cpp +++ clang/lib/Driver/ToolChains/Darwin.cpp @@ -373,6 +373,18 @@ D.Diag(diag::err_drv_bitcode_unsupported_on_toolchain); } + // If GlobalISel is enabled, pass it through to LLVM. + if (Arg *A = Args.getLastArg(options::OPT_fglobal_isel, + options::OPT_fno_global_isel)) { + if (A->getOption().matches(options::OPT_fglobal_isel)) { + CmdArgs.push_back("-mllvm"); + CmdArgs.push_back("-global-isel"); + // Disable abort and fall back to SDAG silently. + CmdArgs.push_back("-mllvm"); + CmdArgs.push_back("-global-isel-abort=0"); + } + } + Args.AddLastArg(CmdArgs, options::OPT_prebind); Args.AddLastArg(CmdArgs, options::OPT_noprebind); Args.AddLastArg(CmdArgs, options::OPT_nofixprebinding);
Index: clang/test/Driver/darwin-ld-lto.c =================================================================== --- clang/test/Driver/darwin-ld-lto.c +++ clang/test/Driver/darwin-ld-lto.c @@ -30,3 +30,11 @@ // THIN_LTO_OBJECT_PATH: {{ld(.exe)?"}} // THIN_LTO_OBJECT_PATH-SAME: "-object_path_lto" // THIN_LTO_OBJECT_PATH-SAME: {{thinlto\-[a-zA-Z0-9_]+}} + + +// Check that we pass through -fglobal-isel flags to libLTO. +// RUN: %clang -target arm64-apple-darwin %s -flto -fglobal-isel -### 2>&1 | \ +// RUN: FileCheck --check-prefix=GISEL %s +// GISEL: {{ld(.exe)?"}} +// GISEL: "-mllvm" "-global-isel" +// GISEL: "-mllvm" "-global-isel-abort=0" Index: clang/lib/Driver/ToolChains/Darwin.cpp =================================================================== --- clang/lib/Driver/ToolChains/Darwin.cpp +++ clang/lib/Driver/ToolChains/Darwin.cpp @@ -373,6 +373,18 @@ D.Diag(diag::err_drv_bitcode_unsupported_on_toolchain); } + // If GlobalISel is enabled, pass it through to LLVM. + if (Arg *A = Args.getLastArg(options::OPT_fglobal_isel, + options::OPT_fno_global_isel)) { + if (A->getOption().matches(options::OPT_fglobal_isel)) { + CmdArgs.push_back("-mllvm"); + CmdArgs.push_back("-global-isel"); + // Disable abort and fall back to SDAG silently. + CmdArgs.push_back("-mllvm"); + CmdArgs.push_back("-global-isel-abort=0"); + } + } + Args.AddLastArg(CmdArgs, options::OPT_prebind); Args.AddLastArg(CmdArgs, options::OPT_noprebind); Args.AddLastArg(CmdArgs, options::OPT_nofixprebinding);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits