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änitzstatic 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änitzTEST(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änitzTEST(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