[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
This commit is contained in:
Jan Svoboda 2021-01-05 19:45:31 +01:00
parent 28a326eba0
commit f111cf992d
2 changed files with 13 additions and 1 deletions

View File

@ -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">;

View File

@ -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:
//