blob: dd5ef431ae07c087f2a2a1207a52184a9a8f2402 [file] [log] [blame]
Douglas Katzmanec1fc972015-05-08 15:34:12 +00001//===- 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
14using namespace llvm;
15
16namespace {
17
18TEST(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 llvm::TargetRegistry RegistryRoot;
26 for (const auto &Target : RegistryRoot) {
27 StringRef Name = Target.getName();
28 // There is really no way (at present) to ask a Target whether it targets
29 // a specific architecture, because the logic for that is buried in a
30 // predicate.
31 // We can't ask the predicate "Are you a function that always returns
32 // false?"
33 // So given that the cpp backend truly has no target arch, it is skipped.
34 if (Name != "cpp") {
35 Triple::ArchType Arch = Triple::getArchTypeForLLVMName(Name);
36 EXPECT_NE(Arch, Triple::UnknownArch);
37 ++Count;
38 }
39 }
40 ASSERT_NE(Count, 0);
41}
42
43} // end namespace