diff options
author | Jan Svoboda <jan_svoboda@apple.com> | 2021-01-05 19:45:31 +0100 |
---|---|---|
committer | Jan Svoboda <jan_svoboda@apple.com> | 2021-01-05 20:10:07 +0100 |
commit | f111cf992df4ec00acfdd026eac12b36c3831999 (patch) | |
tree | 1b47cbaf3aba05802323aff3dd635e112abdbda9 | |
parent | 28a326eba0a9c367ab6a2d23ca0ae4fb8ab2b536 (diff) | |
download | llvm-f111cf992df4ec00acfdd026eac12b36c3831999.zip llvm-f111cf992df4ec00acfdd026eac12b36c3831999.tar.gz llvm-f111cf992df4ec00acfdd026eac12b36c3831999.tar.bz2 |
[clang][cli] Specify correct integer width for -fbuild-session-timestamp
This fixes an issue where large integer values were rejected as invalid.
Reviewed By: arphaman
Differential Revision: https://reviews.llvm.org/D94101
-rw-r--r-- | clang/include/clang/Driver/Options.td | 2 | ||||
-rw-r--r-- | clang/unittests/Frontend/CompilerInvocationTest.cpp | 12 |
2 files changed, 13 insertions, 1 deletions
diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 9a851f6..c7da888 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -1767,7 +1767,7 @@ def fmodules_search_all : Flag <["-"], "fmodules-search-all">, Group<f_Group>, def fbuild_session_timestamp : Joined<["-"], "fbuild-session-timestamp=">, Group<i_Group>, Flags<[CC1Option]>, MetaVarName<"<time since Epoch in seconds>">, HelpText<"Time when the current build session started">, - MarshallingInfoStringInt<"HeaderSearchOpts->BuildSessionTimestamp">; + MarshallingInfoStringInt<"HeaderSearchOpts->BuildSessionTimestamp", "0", "uint64_t">; def fbuild_session_file : Joined<["-"], "fbuild-session-file=">, Group<i_Group>, MetaVarName<"<file>">, HelpText<"Use the last modification time of <file> as the build session timestamp">; diff --git a/clang/unittests/Frontend/CompilerInvocationTest.cpp b/clang/unittests/Frontend/CompilerInvocationTest.cpp index 51b7ba8..83ae169 100644 --- a/clang/unittests/Frontend/CompilerInvocationTest.cpp +++ b/clang/unittests/Frontend/CompilerInvocationTest.cpp @@ -368,6 +368,18 @@ TEST_F(CommandLineTest, CanGenerateCC1COmmandLineSeparateEnumDefault) { ASSERT_THAT(GeneratedArgs, Not(Contains(StrEq("pic")))); } +// Wide integer option. + +TEST_F(CommandLineTest, WideIntegerHighValue) { + const char *Args[] = {"-fbuild-session-timestamp=1609827494445723662"}; + + CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags); + + ASSERT_FALSE(Diags->hasErrorOccurred()); + ASSERT_EQ(Invocation.getHeaderSearchOpts().BuildSessionTimestamp, + 1609827494445723662ull); +} + // Tree of boolean options that can be (directly or transitively) implied by // their parent: // |