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 HamesTEST(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