OLD | NEW |
1 //===- subzero/src/IceClFlags.cpp - Command line flags and parsing --------===// | 1 //===- subzero/src/IceClFlags.cpp - Command line flags and parsing --------===// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 /// | 9 /// |
10 /// \file | 10 /// \file |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 template <typename T> using list = llvm::cl::list<T>; | 53 template <typename T> using list = llvm::cl::list<T>; |
54 | 54 |
55 using llvm::cl::NotHidden; | 55 using llvm::cl::NotHidden; |
56 | 56 |
57 template <typename T> using opt = llvm::cl::opt<T>; | 57 template <typename T> using opt = llvm::cl::opt<T>; |
58 | 58 |
59 using llvm::cl::ParseCommandLineOptions; | 59 using llvm::cl::ParseCommandLineOptions; |
60 | 60 |
61 using llvm::cl::Positional; | 61 using llvm::cl::Positional; |
62 | 62 |
| 63 // LLVM commit 3ffe113e11168abcd809ec5ac539538ade5db0cb changed the internals of |
| 64 // llvm::cl that need to be mirrored here. That commit removed the clEnumValEnd |
| 65 // macro, so we can use that to determine which version of LLVM we're compiling |
| 66 // against. |
| 67 #if defined(clEnumValEnd) |
| 68 |
| 69 #define CLENUMVALEND , clEnumValEnd |
| 70 |
63 template <typename T> using ValuesClass = llvm::cl::ValuesClass<T>; | 71 template <typename T> using ValuesClass = llvm::cl::ValuesClass<T>; |
64 | 72 |
65 template <typename T, typename... A> | 73 template <typename T, typename... A> |
66 ValuesClass<T> values(const char *Arg, T Val, const char *Desc, A &&... Args) { | 74 ValuesClass<T> values(const char *Arg, T Val, const char *Desc, A &&... Args) { |
67 return llvm::cl::values(Arg, Val, Desc, std::forward<A>(Args)..., nullptr); | 75 return llvm::cl::values(Arg, Val, Desc, std::forward<A>(Args)..., nullptr); |
68 } | 76 } |
69 | 77 |
| 78 #else // !defined(clEnumValEnd) |
| 79 |
| 80 #define CLENUMVALEND |
| 81 |
| 82 using llvm::cl::OptionEnumValue; |
| 83 |
| 84 template <typename... A> llvm::cl::ValuesClass values(A &&... Args) { |
| 85 return llvm::cl::values(std::forward<A>(Args)...); |
| 86 } |
| 87 |
| 88 #endif // !defined(clEnumValEnd) |
| 89 |
70 using llvm::cl::value_desc; | 90 using llvm::cl::value_desc; |
71 } // end of namespace cl | 91 } // end of namespace cl |
72 | 92 |
73 // cl_type_traits is used to convert between a tuple of <T, cl_detail::*flag> to | 93 // cl_type_traits is used to convert between a tuple of <T, cl_detail::*flag> to |
74 // the appropriate (llvm::)cl object. | 94 // the appropriate (llvm::)cl object. |
75 template <typename B, typename CL> struct cl_type_traits {}; | 95 template <typename B, typename CL> struct cl_type_traits {}; |
76 | 96 |
77 template <typename T> | 97 template <typename T> |
78 struct cl_type_traits<T, ::Ice::cl_detail::dev_list_flag> { | 98 struct cl_type_traits<T, ::Ice::cl_detail::dev_list_flag> { |
79 using cl_type = cl::list<T>; | 99 using cl_type = cl::list<T>; |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 (OutFileTypeObj != Ice::FT_Iasm)); | 225 (OutFileTypeObj != Ice::FT_Iasm)); |
206 OutFlags.ForceO2.init(OutFlags.getForceO2String()); | 226 OutFlags.ForceO2.init(OutFlags.getForceO2String()); |
207 OutFlags.SplitInsts.init(OutFlags.getSplitInstString()); | 227 OutFlags.SplitInsts.init(OutFlags.getSplitInstString()); |
208 OutFlags.TestStatus.init(OutFlags.getTestStatusString()); | 228 OutFlags.TestStatus.init(OutFlags.getTestStatusString()); |
209 OutFlags.TimingFocus.init(OutFlags.getTimingFocusOnString()); | 229 OutFlags.TimingFocus.init(OutFlags.getTimingFocusOnString()); |
210 OutFlags.TranslateOnly.init(OutFlags.getTranslateOnlyString()); | 230 OutFlags.TranslateOnly.init(OutFlags.getTranslateOnlyString()); |
211 OutFlags.VerboseFocus.init(OutFlags.getVerboseFocusOnString()); | 231 OutFlags.VerboseFocus.init(OutFlags.getVerboseFocusOnString()); |
212 } | 232 } |
213 | 233 |
214 } // end of namespace Ice | 234 } // end of namespace Ice |
OLD | NEW |