ASSERT_TRUE(Invocation.getFrontendOpts().UseTemporary);
}
-// Boolean option with a keypath that defaults to true.
-// The flag with negative spelling can set the keypath to false.
-// The flag with positive spelling can reset the keypath to true.
-
-TEST_F(CommandLineTest, BoolOptionDefaultTruePresentNone) {
- const char *Args[] = {""};
-
- CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
- ASSERT_FALSE(Diags->hasErrorOccurred());
- ASSERT_TRUE(Invocation.getCodeGenOpts().Autolink);
-
- // TODO: Test argument generation.
-}
-
-TEST_F(CommandLineTest, BoolOptionDefaultTruePresentNegChange) {
- const char *Args[] = {"-fno-autolink"};
-
- CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
- ASSERT_FALSE(Diags->hasErrorOccurred());
- ASSERT_FALSE(Invocation.getCodeGenOpts().Autolink);
-
- // TODO: Test argument generation.
-}
-
-TEST_F(CommandLineTest, BoolOptionDefaultTruePresentPosReset) {
- const char *Args[] = {"-fautolink"};
-
- CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
- ASSERT_TRUE(Diags->hasErrorOccurred()); // Driver-only flag.
- ASSERT_TRUE(Invocation.getCodeGenOpts().Autolink);
-}
-
-// Boolean option with a keypath that defaults to false.
-// The flag with negative spelling can set the keypath to true.
-// The flag with positive spelling can reset the keypath to false.
-
-TEST_F(CommandLineTest, BoolOptionDefaultFalsePresentNone) {
- const char *Args[] = {""};
-
- CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
- ASSERT_FALSE(Diags->hasErrorOccurred());
- ASSERT_FALSE(Invocation.getCodeGenOpts().NoInlineLineTables);
-
- // TODO: Test argument generation.
-}
-
-TEST_F(CommandLineTest, BoolOptionDefaultFalsePresentNegChange) {
- const char *Args[] = {"-gno-inline-line-tables"};
-
- CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
- ASSERT_FALSE(Diags->hasErrorOccurred());
- ASSERT_TRUE(Invocation.getCodeGenOpts().NoInlineLineTables);
-
- // TODO: Test argument generation.
-}
-
-TEST_F(CommandLineTest, BoolOptionDefaultFalsePresentPosReset) {
- const char *Args[] = {"-ginline-line-tables"};
-
- CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
- ASSERT_TRUE(Diags->hasErrorOccurred()); // Driver-only flag.
- ASSERT_FALSE(Invocation.getCodeGenOpts().NoInlineLineTables);
-}
-
-// Boolean option with a keypath that defaults to false.
-// The flag with positive spelling can set the keypath to true.
-// The flag with negative spelling can reset the keypath to false.
-
-TEST_F(CommandLineTest, BoolOptionDefaultFalsePresentNoneX) {
- const char *Args[] = {""};
-
- CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
- ASSERT_FALSE(Diags->hasErrorOccurred());
- ASSERT_FALSE(Invocation.getCodeGenOpts().CodeViewGHash);
-
- // TODO: Test argument generation.
-}
-
-TEST_F(CommandLineTest, BoolOptionDefaultFalsePresentPosChange) {
- const char *Args[] = {"-gcodeview-ghash"};
-
- CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
- ASSERT_FALSE(Diags->hasErrorOccurred());
- ASSERT_TRUE(Invocation.getCodeGenOpts().CodeViewGHash);
-
- // TODO: Test argument generation.
-}
-
-TEST_F(CommandLineTest, BoolOptionDefaultFalsePresentNegReset) {
- const char *Args[] = {"-gno-codeview-ghash"};
-
- CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
- ASSERT_TRUE(Diags->hasErrorOccurred()); // Driver-only flag.
- ASSERT_FALSE(Invocation.getCodeGenOpts().CodeViewGHash);
-}
-
-// Boolean option with a keypath that defaults to an arbitrary expression.
-// The flag with positive spelling can set the keypath to true.
-// The flag with negative spelling can set the keypath to false.
-
-// NOTE: The following tests need to be updated when we start enabling the new
-// pass manager by default.
-
-TEST_F(CommandLineTest, BoolOptionDefaultArbitraryTwoFlagsPresentNone) {
- const char *Args = {""};
-
- CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
-
- ASSERT_FALSE(Diags->hasErrorOccurred());
- ASSERT_FALSE(Invocation.getCodeGenOpts().ExperimentalNewPassManager);
-
- Invocation.generateCC1CommandLine(GeneratedArgs, *this);
- ASSERT_THAT(GeneratedArgs,
- Not(Contains(StrEq("-fexperimental-new-pass-manager"))));
-}
-
-TEST_F(CommandLineTest, BoolOptionDefaultArbitraryTwoFlagsPresentPos) {
- const char *Args[] = {"-fexperimental-new-pass-manager"};
-
- CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
- ASSERT_FALSE(Diags->hasErrorOccurred());
- ASSERT_TRUE(Invocation.getCodeGenOpts().ExperimentalNewPassManager);
-
- Invocation.generateCC1CommandLine(GeneratedArgs, *this);
- ASSERT_THAT(GeneratedArgs,
- Contains(StrEq("-fexperimental-new-pass-manager")));
- ASSERT_THAT(GeneratedArgs,
- Not(Contains(StrEq("-fno-experimental-new-pass-manager"))));
-}
-
-TEST_F(CommandLineTest, BoolOptionDefaultArbitraryTwoFlagsPresentNeg) {
- const char *Args[] = {"-fno-experimental-new-pass-manager"};
-
- CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
- ASSERT_FALSE(Diags->hasErrorOccurred());
- ASSERT_FALSE(Invocation.getCodeGenOpts().ExperimentalNewPassManager);
-
- Invocation.generateCC1CommandLine(GeneratedArgs, *this);
- ASSERT_THAT(GeneratedArgs,
- Contains(StrEq("-fno-experimental-new-pass-manager")));
- ASSERT_THAT(GeneratedArgs,
- Not(Contains(StrEq("-fexperimental-new-pass-manager"))));
-}
-
TEST_F(CommandLineTest, CanGenerateCC1CommandLineFlag) {
const char *Args[] = {"-fmodules-strict-context-hash"};