1 //===- unittests/Support/TargetRegistry.cpp - -----------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #include "llvm/Support/TargetRegistry.h" 11 #include "llvm/Support/TargetSelect.h" 12 #include "gtest/gtest.h" 13 14 using namespace llvm; 15 16 namespace { 17 18 TEST(TargetRegistry, TargetHasArchType) { 19 // Presence of at least one target will be asserted when done with the loop, 20 // else this would pass by accident if InitializeAllTargetInfos were omitted. 21 int Count = 0; 22 23 llvm::InitializeAllTargetInfos(); 24 25 for (const Target &T : TargetRegistry::targets()) { 26 StringRef Name = T.getName(); 27 // There is really no way (at present) to ask a Target whether it targets 28 // a specific architecture, because the logic for that is buried in a 29 // predicate. 30 // We can't ask the predicate "Are you a function that always returns 31 // false?" 32 // So given that the cpp backend truly has no target arch, it is skipped. 33 if (Name != "cpp") { 34 Triple::ArchType Arch = Triple::getArchTypeForLLVMName(Name); 35 EXPECT_NE(Arch, Triple::UnknownArch); 36 ++Count; 37 } 38 } 39 ASSERT_NE(Count, 0); 40 } 41 42 } // end namespace 43