12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- //===- unittests/CodeGen/BufferSourceTest.cpp - MemoryBuffer source tests -===//
- //
- // The LLVM Compiler Infrastructure
- //
- // This file is distributed under the University of Illinois Open Source
- // License. See LICENSE.TXT for details.
- //
- //===----------------------------------------------------------------------===//
- #include "clang/AST/ASTConsumer.h"
- #include "clang/AST/ASTContext.h"
- #include "clang/AST/RecursiveASTVisitor.h"
- #include "clang/Basic/TargetInfo.h"
- #include "clang/CodeGen/ModuleBuilder.h"
- #include "clang/Frontend/CompilerInstance.h"
- #include "clang/Lex/Preprocessor.h"
- #include "clang/Parse/ParseAST.h"
- #include "clang/Sema/Sema.h"
- #include "llvm/ADT/Triple.h"
- #include "llvm/IR/LLVMContext.h"
- #include "llvm/Support/Host.h"
- #include "llvm/Support/MemoryBuffer.h"
- #include "gtest/gtest.h"
- using namespace llvm;
- using namespace clang;
- namespace {
- // Emitting constructors for global objects involves looking
- // at the source file name. This makes sure that we don't crash
- // if the source file is a memory buffer.
- const char TestProgram[] =
- "class EmitCXXGlobalInitFunc "
- "{ "
- "public: "
- " EmitCXXGlobalInitFunc() {} "
- "}; "
- "EmitCXXGlobalInitFunc test; ";
- TEST(BufferSourceTest, EmitCXXGlobalInitFunc) {
- CompilerInstance compiler;
- compiler.createDiagnostics();
- compiler.getLangOpts().CPlusPlus = 1;
- compiler.getLangOpts().CPlusPlus11 = 1;
- compiler.getTargetOpts().Triple = llvm::Triple::normalize(
- llvm::sys::getProcessTriple());
- compiler.setTarget(clang::TargetInfo::CreateTargetInfo(
- compiler.getDiagnostics(),
- std::make_shared<clang::TargetOptions>(
- compiler.getTargetOpts())));
- compiler.createFileManager();
- compiler.createSourceManager(compiler.getFileManager());
- compiler.createPreprocessor(clang::TU_Prefix);
- compiler.createASTContext();
- compiler.setASTConsumer(std::unique_ptr<ASTConsumer>(
- CreateLLVMCodeGen(
- compiler.getDiagnostics(),
- "EmitCXXGlobalInitFuncTest",
- compiler.getHeaderSearchOpts(),
- compiler.getPreprocessorOpts(),
- compiler.getCodeGenOpts(),
- llvm::getGlobalContext())));
- compiler.createSema(clang::TU_Prefix,NULL);
- clang::SourceManager &sm = compiler.getSourceManager();
- sm.setMainFileID(sm.createFileID(
- llvm::MemoryBuffer::getMemBuffer(TestProgram), clang::SrcMgr::C_User));
- clang::ParseAST(compiler.getSema(), false, false);
- }
- }
|