diff options
| author | Andrey Kasaurov <Andrey.Kasaurov@amd.com> | 2017-09-05 10:24:38 +0000 |
|---|---|---|
| committer | Andrey Kasaurov <Andrey.Kasaurov@amd.com> | 2017-09-05 10:24:38 +0000 |
| commit | 6618c39a95d5e781d65f19538ef17ac1a530e0c8 (patch) | |
| tree | faefb17811df83d7e5e278edf84a84526bb9f6f8 /clang/lib/Driver/ToolChains/AMDGPU.h | |
| parent | 1ba2bf2162617ac081525a29622f443b81ff9aa1 (diff) | |
| download | bcm5719-llvm-6618c39a95d5e781d65f19538ef17ac1a530e0c8.tar.gz bcm5719-llvm-6618c39a95d5e781d65f19538ef17ac1a530e0c8.zip | |
[AMDGPU] Implement infrastructure to set options in AMDGPUToolChain
In current OpenCL implementation some options are set in OpenCL RT/Driver, which causes discrepancy between online and offline paths.
Implement infrastructure to move options from OpenCL RT/Driver to AMDGPUToolChain using overloaded TranslateArgs() method.
Create map for default options values, as Options.td doesn't support default values (in contrast with OPTIONS.def).
Add two driver options: -On and -mNN (like -O3, -m64).
Some minor formatting changes to follow the clang-format style.
Differential Revision: https://reviews.llvm.org/D37386
llvm-svn: 312524
Diffstat (limited to 'clang/lib/Driver/ToolChains/AMDGPU.h')
| -rw-r--r-- | clang/lib/Driver/ToolChains/AMDGPU.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/clang/lib/Driver/ToolChains/AMDGPU.h b/clang/lib/Driver/ToolChains/AMDGPU.h index 9af1e96489e..e2a12d46823 100644 --- a/clang/lib/Driver/ToolChains/AMDGPU.h +++ b/clang/lib/Driver/ToolChains/AMDGPU.h @@ -11,8 +11,10 @@ #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_AMDGPU_H #include "Gnu.h" +#include "clang/Driver/Options.h" #include "clang/Driver/Tool.h" #include "clang/Driver/ToolChain.h" +#include <map> namespace clang { namespace driver { @@ -37,14 +39,26 @@ public: namespace toolchains { class LLVM_LIBRARY_VISIBILITY AMDGPUToolChain : public Generic_ELF { + +private: + const std::map<options::ID, const StringRef> OptionsDefault; + protected: Tool *buildLinker() const override; + const StringRef getOptionDefault(options::ID OptID) const { + auto opt = OptionsDefault.find(OptID); + assert(opt != OptionsDefault.end() && "No Default for Option"); + return opt->second; + } public: AMDGPUToolChain(const Driver &D, const llvm::Triple &Triple, - const llvm::opt::ArgList &Args); + const llvm::opt::ArgList &Args); unsigned GetDefaultDwarfVersion() const override { return 2; } bool IsIntegratedAssemblerDefault() const override { return true; } + llvm::opt::DerivedArgList * + TranslateArgs(const llvm::opt::DerivedArgList &Args, StringRef BoundArch, + Action::OffloadKind DeviceOffloadKind) const override; }; } // end namespace toolchains |

