[JITLink] Add support of R_X86_64_32S relocation
[llvm-project.git] / llvm / unittests / Passes / PassBuilderBindingsTest.cpp
blobc55c882e6083c950cea183fef93b3fea90c692cf
1 //===- unittests/Passes/PassBuilderBindingsTest.cpp -----------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
9 #include "llvm-c/Core.h"
10 #include "llvm-c/Transforms/PassBuilder.h"
11 #include "llvm-c/Types.h"
12 #include "gtest/gtest.h"
14 using namespace llvm;
16 class PassBuilderCTest : public testing::Test {
17 void SetUp() override {
18 LLVMInitializeAllTargetInfos();
19 char *Triple = LLVMGetDefaultTargetTriple();
20 char *Err;
21 LLVMTargetRef Target;
22 if (LLVMGetTargetFromTriple(Triple, &Target, &Err)) {
23 FAIL() << "Failed to create target from default triple (" << Triple
24 << "): " << Err;
26 TM = LLVMCreateTargetMachine(Target, Triple, "generic", "",
27 LLVMCodeGenLevelDefault, LLVMRelocDefault,
28 LLVMCodeModelDefault);
29 LLVMDisposeMessage(Triple);
30 Context = LLVMContextCreate();
31 Module = LLVMModuleCreateWithNameInContext("test", Context);
34 void TearDown() override {
35 LLVMDisposeTargetMachine(TM);
36 LLVMDisposeModule(Module);
37 LLVMContextDispose(Context);
40 public:
41 LLVMTargetMachineRef TM;
42 LLVMModuleRef Module;
43 LLVMContextRef Context;
46 TEST_F(PassBuilderCTest, Basic) {
47 LLVMPassBuilderOptionsRef Options = LLVMCreatePassBuilderOptions();
48 LLVMPassBuilderOptionsSetLoopUnrolling(Options, 1);
49 LLVMPassBuilderOptionsSetVerifyEach(Options, 1);
50 LLVMPassBuilderOptionsSetDebugLogging(Options, 0);
51 if (LLVMErrorRef E = LLVMRunPasses(Module, "default<O2>", TM, Options)) {
52 char *Msg = LLVMGetErrorMessage(E);
53 LLVMConsumeError(E);
54 LLVMDisposePassBuilderOptions(Options);
55 FAIL() << "Failed to run passes: " << Msg;
57 LLVMDisposePassBuilderOptions(Options);
60 TEST_F(PassBuilderCTest, InvalidPassIsError) {
61 LLVMPassBuilderOptionsRef Options = LLVMCreatePassBuilderOptions();
62 LLVMErrorRef E1 = LLVMRunPasses(Module, "", TM, Options);
63 LLVMErrorRef E2 = LLVMRunPasses(Module, "does-not-exist-pass", TM, Options);
64 ASSERT_TRUE(E1);
65 ASSERT_TRUE(E2);
66 LLVMConsumeError(E1);
67 LLVMConsumeError(E2);
68 LLVMDisposePassBuilderOptions(Options);