summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/ToolChains/AMDGPU.h
diff options
context:
space:
mode:
authorAndrey Kasaurov <Andrey.Kasaurov@amd.com>2017-09-05 10:24:38 +0000
committerAndrey Kasaurov <Andrey.Kasaurov@amd.com>2017-09-05 10:24:38 +0000
commit6618c39a95d5e781d65f19538ef17ac1a530e0c8 (patch)
treefaefb17811df83d7e5e278edf84a84526bb9f6f8 /clang/lib/Driver/ToolChains/AMDGPU.h
parent1ba2bf2162617ac081525a29622f443b81ff9aa1 (diff)
downloadbcm5719-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.h16
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
OpenPOWER on IntegriCloud