xref: /llvm-project/llvm/unittests/ExecutionEngine/Orc/JITTargetMachineBuilderTest.cpp (revision 0a1aa6cda2758b0926a95f87d39ffefb1cb90200)
1d435ce43SLang Hames //===----------- CoreAPIsTest.cpp - Unit tests for Core ORC APIs ----------===//
2d435ce43SLang Hames //
32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6d435ce43SLang Hames //
7d435ce43SLang Hames //===----------------------------------------------------------------------===//
8d435ce43SLang Hames 
9d435ce43SLang Hames #include "llvm/ExecutionEngine/Orc/JITTargetMachineBuilder.h"
10d435ce43SLang Hames #include "OrcTestCommon.h"
11d435ce43SLang Hames 
12d435ce43SLang Hames using namespace llvm;
13d435ce43SLang Hames using namespace llvm::orc;
14d435ce43SLang Hames 
15d435ce43SLang Hames namespace {
16d435ce43SLang Hames 
TEST(ExecutionUtilsTest,JITTargetMachineBuilder)17d435ce43SLang Hames TEST(ExecutionUtilsTest, JITTargetMachineBuilder) {
18d435ce43SLang Hames   // Tests basic API usage.
19d435ce43SLang Hames   // Bails out on error, as it is valid to run this test without any targets
20d435ce43SLang Hames   // built.
21d435ce43SLang Hames 
22d435ce43SLang Hames   // Make sure LLVM has been initialized.
23d435ce43SLang Hames   OrcNativeTarget::initialize();
24d435ce43SLang Hames 
25d435ce43SLang Hames   auto JTMB = cantFail(JITTargetMachineBuilder::detectHost());
26d435ce43SLang Hames 
27d435ce43SLang Hames   // Test API by performing a bunch of no-ops.
28d435ce43SLang Hames   JTMB.setCPU("");
29b6a01caaSKazu Hirata   JTMB.setRelocationModel(std::nullopt);
30b6a01caaSKazu Hirata   JTMB.setCodeModel(std::nullopt);
31*0a1aa6cdSArthur Eubanks   JTMB.setCodeGenOptLevel(CodeGenOptLevel::None);
32d435ce43SLang Hames   JTMB.addFeatures(std::vector<std::string>());
33d435ce43SLang Hames   SubtargetFeatures &STF = JTMB.getFeatures();
34d435ce43SLang Hames   (void)STF;
35d435ce43SLang Hames   TargetOptions &TO = JTMB.getOptions();
36d435ce43SLang Hames   (void)TO;
37d435ce43SLang Hames   Triple &TT = JTMB.getTargetTriple();
38d435ce43SLang Hames   (void)TT;
39d435ce43SLang Hames 
40d435ce43SLang Hames   auto TM = JTMB.createTargetMachine();
41d435ce43SLang Hames 
42d435ce43SLang Hames   if (!TM)
43d435ce43SLang Hames     consumeError(TM.takeError());
44d435ce43SLang Hames   else {
45d435ce43SLang Hames     EXPECT_NE(TM.get(), nullptr)
46d435ce43SLang Hames         << "JITTargetMachineBuilder should return a non-null TargetMachine "
47d435ce43SLang Hames            "on success";
48d435ce43SLang Hames   }
49d435ce43SLang Hames }
50d435ce43SLang Hames 
51d435ce43SLang Hames } // namespace
52