summaryrefslogtreecommitdiff
path: root/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp')
-rw-r--r--unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp93
1 files changed, 0 insertions, 93 deletions
diff --git a/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp b/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp
deleted file mode 100644
index 780fbc1b7b..0000000000
--- a/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-//===- MCJITTest.cpp - Unit tests for the MCJIT ---------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This test suite verifies basic MCJIT functionality when invoked form the C
-// API.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm-c/Analysis.h"
-#include "llvm-c/Core.h"
-#include "llvm-c/ExecutionEngine.h"
-#include "llvm-c/Target.h"
-#include "llvm-c/Transforms/Scalar.h"
-#include "llvm/Support/Host.h"
-#include "MCJITTestAPICommon.h"
-#include "gtest/gtest.h"
-
-using namespace llvm;
-
-class MCJITCAPITest : public testing::Test, public MCJITTestAPICommon {
-protected:
- MCJITCAPITest() {
- // The architectures below are known to be compatible with MCJIT as they
- // are copied from test/ExecutionEngine/MCJIT/lit.local.cfg and should be
- // kept in sync.
- SupportedArchs.push_back(Triple::arm);
- SupportedArchs.push_back(Triple::mips);
- SupportedArchs.push_back(Triple::x86);
- SupportedArchs.push_back(Triple::x86_64);
-
- // The operating systems below are known to be sufficiently incompatible
- // that they will fail the MCJIT C API tests.
- UnsupportedOSs.push_back(Triple::Cygwin);
- }
-};
-
-TEST_F(MCJITCAPITest, simple_function) {
- SKIP_UNSUPPORTED_PLATFORM;
-
- char *error = 0;
-
- // Creates a function that returns 42, compiles it, and runs it.
-
- LLVMModuleRef module = LLVMModuleCreateWithName("simple_module");
-
- LLVMValueRef function = LLVMAddFunction(
- module, "simple_function", LLVMFunctionType(LLVMInt32Type(), 0, 0, 0));
- LLVMSetFunctionCallConv(function, LLVMCCallConv);
-
- LLVMBasicBlockRef entry = LLVMAppendBasicBlock(function, "entry");
- LLVMBuilderRef builder = LLVMCreateBuilder();
- LLVMPositionBuilderAtEnd(builder, entry);
- LLVMBuildRet(builder, LLVMConstInt(LLVMInt32Type(), 42, 0));
-
- LLVMVerifyModule(module, LLVMAbortProcessAction, &error);
- LLVMDisposeMessage(error);
-
- LLVMDisposeBuilder(builder);
-
- LLVMMCJITCompilerOptions options;
- memset(&options, 0, sizeof(options));
- options.OptLevel = 2;
- options.NoFramePointerElim = false; // Just ensure that this field still exists.
-
- LLVMExecutionEngineRef engine;
- ASSERT_EQ(
- 0, LLVMCreateMCJITCompilerForModule(&engine, module, &options, sizeof(options),
- &error));
-
- LLVMPassManagerRef pass = LLVMCreatePassManager();
- LLVMAddTargetData(LLVMGetExecutionEngineTargetData(engine), pass);
- LLVMAddConstantPropagationPass(pass);
- LLVMAddInstructionCombiningPass(pass);
- LLVMRunPassManager(pass, module);
- LLVMDisposePassManager(pass);
-
- union {
- void *raw;
- int (*usable)();
- } functionPointer;
- functionPointer.raw = LLVMGetPointerToGlobal(engine, function);
-
- EXPECT_EQ(42, functionPointer.usable());
-
- LLVMDisposeExecutionEngine(engine);
-}
-