diff options
author | Fangrui Song <maskray@google.com> | 2019-04-24 02:40:20 +0000 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2019-04-24 02:40:20 +0000 |
commit | b5f39845417560b7a54342dcb013af82f83567b2 (patch) | |
tree | 2d0b5f481f113680da28e5902427b99e692ce2d6 /llvm/lib/Support/CommandLine.cpp | |
parent | add16a8da9ccd07eabda2dffd0d32188f07da09c (diff) | |
download | llvm-b5f39845417560b7a54342dcb013af82f83567b2.zip llvm-b5f39845417560b7a54342dcb013af82f83567b2.tar.gz llvm-b5f39845417560b7a54342dcb013af82f83567b2.tar.bz2 |
[CommandLine] Provide parser<unsigned long> instantiation to allow cl::opt<uint64_t> on LP64 platforms
Summary:
And migrate opt<unsigned long long> to opt<uint64_t>
Fixes PR19665
Differential Revision: https://reviews.llvm.org/D60933
llvm-svn: 359068
Diffstat (limited to 'llvm/lib/Support/CommandLine.cpp')
-rw-r--r-- | llvm/lib/Support/CommandLine.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/llvm/lib/Support/CommandLine.cpp b/llvm/lib/Support/CommandLine.cpp index 0050002..2f3dc4d 100644 --- a/llvm/lib/Support/CommandLine.cpp +++ b/llvm/lib/Support/CommandLine.cpp @@ -54,6 +54,7 @@ template class basic_parser<bool>; template class basic_parser<boolOrDefault>; template class basic_parser<int>; template class basic_parser<unsigned>; +template class basic_parser<unsigned long>; template class basic_parser<unsigned long long>; template class basic_parser<double>; template class basic_parser<float>; @@ -78,6 +79,7 @@ void parser<bool>::anchor() {} void parser<boolOrDefault>::anchor() {} void parser<int>::anchor() {} void parser<unsigned>::anchor() {} +void parser<unsigned long>::anchor() {} void parser<unsigned long long>::anchor() {} void parser<double>::anchor() {} void parser<float>::anchor() {} @@ -1663,6 +1665,16 @@ bool parser<unsigned>::parse(Option &O, StringRef ArgName, StringRef Arg, return false; } +// parser<unsigned long> implementation +// +bool parser<unsigned long>::parse(Option &O, StringRef ArgName, StringRef Arg, + unsigned long &Value) { + + if (Arg.getAsInteger(0, Value)) + return O.error("'" + Arg + "' value invalid for ulong argument!"); + return false; +} + // parser<unsigned long long> implementation // bool parser<unsigned long long>::parse(Option &O, StringRef ArgName, @@ -1670,7 +1682,7 @@ bool parser<unsigned long long>::parse(Option &O, StringRef ArgName, unsigned long long &Value) { if (Arg.getAsInteger(0, Value)) - return O.error("'" + Arg + "' value invalid for uint argument!"); + return O.error("'" + Arg + "' value invalid for ullong argument!"); return false; } @@ -1851,6 +1863,7 @@ PRINT_OPT_DIFF(bool) PRINT_OPT_DIFF(boolOrDefault) PRINT_OPT_DIFF(int) PRINT_OPT_DIFF(unsigned) +PRINT_OPT_DIFF(unsigned long) PRINT_OPT_DIFF(unsigned long long) PRINT_OPT_DIFF(double) PRINT_OPT_DIFF(float) |