Author: python3kgae Date: 2022-05-06T11:42:15-07:00 New Revision: 3fa5eb4cfc065b686c03f912e4414fd00a54d04e
URL: https://github.com/llvm/llvm-project/commit/3fa5eb4cfc065b686c03f912e4414fd00a54d04e DIFF: https://github.com/llvm/llvm-project/commit/3fa5eb4cfc065b686c03f912e4414fd00a54d04e.diff LOG: [HLSL] add -fcgl option flag. fcgl option will make compilation stop after clang codeGen and output the llvm ir. It is added to check clang codeGen output for HLSL. It will be translated into -S -emit-llvm and -disable-llvm-passes. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D124983 Added: clang/test/Driver/dxc_fcgl.hlsl Modified: clang/include/clang/Driver/Options.td clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Driver/ToolChains/HLSL.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index d9a4cb23a0934..ae0048f2a24e6 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -6732,6 +6732,8 @@ def _SLASH_ZW : CLJoined<"ZW">; def dxc_Group : OptionGroup<"<clang-dxc options>">, Flags<[DXCOption]>, HelpText<"dxc compatibility options">; +class DXCFlag<string name> : Option<["/", "-"], name, KIND_FLAG>, + Group<dxc_Group>, Flags<[DXCOption, NoXarchOption]>; class DXCJoinedOrSeparate<string name> : Option<["/", "-"], name, KIND_JOINED_OR_SEPARATE>, Group<dxc_Group>, Flags<[DXCOption, NoXarchOption]>; @@ -6756,3 +6758,7 @@ def target_profile : DXCJoinedOrSeparate<"T">, MetaVarName<"<profile>">, "lib_6_3, lib_6_4, lib_6_5, lib_6_6, lib_6_7, lib_6_x," "ms_6_5, ms_6_6, ms_6_7," "as_6_5, as_6_6, as_6_7">; +def emit_pristine_llvm : DXCFlag<"emit-pristine-llvm">, + HelpText<"Emit pristine LLVM IR from the frontend by not running any LLVM passes at all." + "Same as -S + -emit-llvm + -disable-llvm-passes.">; +def fcgl : DXCFlag<"fcgl">, Alias<emit_pristine_llvm>; diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index ebe51bcd3368a..33172d8042be9 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -3471,7 +3471,9 @@ static void RenderOpenCLOptions(const ArgList &Args, ArgStringList &CmdArgs, static void RenderHLSLOptions(const ArgList &Args, ArgStringList &CmdArgs, types::ID InputType) { - const unsigned ForwardedArguments[] = {options::OPT_dxil_validator_version}; + const unsigned ForwardedArguments[] = {options::OPT_dxil_validator_version, + options::OPT_S, options::OPT_emit_llvm, + options::OPT_disable_llvm_passes}; for (const auto &Arg : ForwardedArguments) if (const auto *A = Args.getLastArg(Arg)) diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index 2822e062fcd5c..b62395b168ea4 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -169,6 +169,15 @@ HLSLToolChain::TranslateArgs(const DerivedArgList &Args, StringRef BoundArch, if (!isLegalValidatorVersion(ValVerStr, getDriver())) continue; } + if (A->getOption().getID() == options::OPT_emit_pristine_llvm) { + // Translate fcgl into -S -emit-llvm and -disable-llvm-passes. + DAL->AddFlagArg(nullptr, Opts.getOption(options::OPT_S)); + DAL->AddFlagArg(nullptr, Opts.getOption(options::OPT_emit_llvm)); + DAL->AddFlagArg(nullptr, + Opts.getOption(options::OPT_disable_llvm_passes)); + A->claim(); + continue; + } DAL->append(A); } // Add default validator version if not set. diff --git a/clang/test/Driver/dxc_fcgl.hlsl b/clang/test/Driver/dxc_fcgl.hlsl new file mode 100644 index 0000000000000..d3eb2523199ca --- /dev/null +++ b/clang/test/Driver/dxc_fcgl.hlsl @@ -0,0 +1,5 @@ +// RUN: %clang_dxc -fcgl foo.hlsl -### %s 2>&1 | FileCheck %s + +// Make sure fcgl option flag which translated into "-S" "-emit-llvm" "-disable-llvm-passes". +// CHECK:"-S" "-emit-llvm" "-disable-llvm-passes" + _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits