xref: /llvm-project/clang/unittests/Interpreter/IncrementalCompilerBuilderTest.cpp (revision 4b75fcf0a50f4be955b611e8e20d84d90ea133c8)
12a4a852aSStefan Gränitz //=== unittests/Interpreter/IncrementalCompilerBuilderTest.cpp ------------===//
22a4a852aSStefan Gränitz //
32a4a852aSStefan Gränitz // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42a4a852aSStefan Gränitz // See https://llvm.org/LICENSE.txt for license information.
52a4a852aSStefan Gränitz // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
62a4a852aSStefan Gränitz //
72a4a852aSStefan Gränitz //===----------------------------------------------------------------------===//
82a4a852aSStefan Gränitz 
92a4a852aSStefan Gränitz #include "clang/Basic/TargetOptions.h"
102a4a852aSStefan Gränitz #include "clang/Frontend/CompilerInstance.h"
112a4a852aSStefan Gränitz #include "clang/Interpreter/Interpreter.h"
122a4a852aSStefan Gränitz #include "clang/Lex/PreprocessorOptions.h"
132a4a852aSStefan Gränitz #include "llvm/Support/Error.h"
142a4a852aSStefan Gränitz #include "gtest/gtest.h"
152a4a852aSStefan Gränitz 
162a4a852aSStefan Gränitz using namespace llvm;
172a4a852aSStefan Gränitz using namespace clang;
182a4a852aSStefan Gränitz 
192a4a852aSStefan Gränitz namespace {
202a4a852aSStefan Gränitz 
212a4a852aSStefan Gränitz // Usually FrontendAction takes the raw pointers and wraps them back into
222a4a852aSStefan Gränitz // unique_ptrs in InitializeFileRemapping()
cleanupRemappedFileBuffers(CompilerInstance & CI)232a4a852aSStefan Gränitz static void cleanupRemappedFileBuffers(CompilerInstance &CI) {
242a4a852aSStefan Gränitz   for (const auto &RB : CI.getPreprocessorOpts().RemappedFileBuffers) {
252a4a852aSStefan Gränitz     delete RB.second;
262a4a852aSStefan Gränitz   }
272a4a852aSStefan Gränitz   CI.getPreprocessorOpts().clearRemappedFiles();
282a4a852aSStefan Gränitz }
292a4a852aSStefan Gränitz 
TEST(IncrementalCompilerBuilder,SetCompilerArgs)302a4a852aSStefan Gränitz TEST(IncrementalCompilerBuilder, SetCompilerArgs) {
312a4a852aSStefan Gränitz   std::vector<const char *> ClangArgv = {"-Xclang", "-ast-dump-all"};
322a4a852aSStefan Gränitz   auto CB = clang::IncrementalCompilerBuilder();
332a4a852aSStefan Gränitz   CB.SetCompilerArgs(ClangArgv);
342a4a852aSStefan Gränitz   auto CI = cantFail(CB.CreateCpp());
352a4a852aSStefan Gränitz   EXPECT_TRUE(CI->getFrontendOpts().ASTDumpAll);
362a4a852aSStefan Gränitz   cleanupRemappedFileBuffers(*CI);
372a4a852aSStefan Gränitz }
382a4a852aSStefan Gränitz 
TEST(IncrementalCompilerBuilder,SetTargetTriple)392a4a852aSStefan Gränitz TEST(IncrementalCompilerBuilder, SetTargetTriple) {
402a4a852aSStefan Gränitz   auto CB = clang::IncrementalCompilerBuilder();
412a4a852aSStefan Gränitz   CB.SetTargetTriple("armv6-none-eabi");
422a4a852aSStefan Gränitz   auto CI = cantFail(CB.CreateCpp());
43*4b75fcf0SYunQiang Su   EXPECT_EQ(CI->getTargetOpts().Triple, "armv6-unknown-none-eabi");
442a4a852aSStefan Gränitz   cleanupRemappedFileBuffers(*CI);
452a4a852aSStefan Gränitz }
462a4a852aSStefan Gränitz 
472a4a852aSStefan Gränitz } // end anonymous namespace
48