| 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 |