Author: sepavloff Date: Thu Feb 18 10:43:24 2016 New Revision: 261223 URL: http://llvm.org/viewvc/llvm-project?rev=261223&view=rev Log: File missed from r261222
Added: cfe/trunk/unittests/Frontend/CodeGenActionTest.cpp Added: cfe/trunk/unittests/Frontend/CodeGenActionTest.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Frontend/CodeGenActionTest.cpp?rev=261223&view=auto ============================================================================== --- cfe/trunk/unittests/Frontend/CodeGenActionTest.cpp (added) +++ cfe/trunk/unittests/Frontend/CodeGenActionTest.cpp Thu Feb 18 10:43:24 2016 @@ -0,0 +1,61 @@ +//===- unittests/Frontend/CodeGenActionTest.cpp --- FrontendAction tests --===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// Unit tests for CodeGenAction. +// +//===----------------------------------------------------------------------===// + +#include "clang/Frontend/CompilerInstance.h" +#include "clang/CodeGen/CodeGenAction.h" +#include "clang/CodeGen/BackendUtil.h" +#include "gtest/gtest.h" + +using namespace llvm; +using namespace clang; +using namespace clang::frontend; + +namespace { + + +class NullCodeGenAction : public CodeGenAction { +public: + NullCodeGenAction(llvm::LLVMContext *_VMContext = nullptr) + : CodeGenAction(Backend_EmitLL, _VMContext) {} + + // The action does not call methods of ATContext. + void ExecuteAction() override { + CompilerInstance &CI = getCompilerInstance(); + if (!CI.hasPreprocessor()) + return; + if (!CI.hasSema()) + CI.createSema(getTranslationUnitKind(), nullptr); + } +}; + + +TEST(CodeGenTest, TestNullCodeGen) { + CompilerInvocation *Invocation = new CompilerInvocation; + Invocation->getPreprocessorOpts().addRemappedFile( + "test.cc", + MemoryBuffer::getMemBuffer("").release()); + Invocation->getFrontendOpts().Inputs.push_back( + FrontendInputFile("test.cc", IK_CXX)); + Invocation->getFrontendOpts().ProgramAction = EmitLLVM; + Invocation->getTargetOpts().Triple = "i386-unknown-linux-gnu"; + CompilerInstance Compiler; + Compiler.setInvocation(Invocation); + Compiler.createDiagnostics(); + EXPECT_TRUE(Compiler.hasDiagnostics()); + + std::unique_ptr<FrontendAction> Act(new NullCodeGenAction); + bool Success = Compiler.ExecuteAction(*Act); + EXPECT_TRUE(Success); +} + +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits