forked from llvm-mirror/llvm
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Prevent further errors of omission when adding backend names.
Differential Revision: http://reviews.llvm.org/D9441 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236865 91177308-0d34-0410-b5e6-96231b3b80d8
- Loading branch information
Showing
2 changed files
with
45 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
//===- unittests/Support/TargetRegistry.cpp - -----------------------------===// | ||
// | ||
// The LLVM Compiler Infrastructure | ||
// | ||
// This file is distributed under the University of Illinois Open Source | ||
// License. See LICENSE.TXT for details. | ||
// | ||
//===----------------------------------------------------------------------===// | ||
|
||
#include "llvm/Support/TargetRegistry.h" | ||
#include "llvm/Support/TargetSelect.h" | ||
#include "gtest/gtest.h" | ||
|
||
using namespace llvm; | ||
|
||
namespace { | ||
|
||
TEST(TargetRegistry, TargetHasArchType) { | ||
// Presence of at least one target will be asserted when done with the loop, | ||
// else this would pass by accident if InitializeAllTargetInfos were omitted. | ||
int Count = 0; | ||
|
||
llvm::InitializeAllTargetInfos(); | ||
|
||
llvm::TargetRegistry RegistryRoot; | ||
for (const auto &Target : RegistryRoot) { | ||
StringRef Name = Target.getName(); | ||
// There is really no way (at present) to ask a Target whether it targets | ||
// a specific architecture, because the logic for that is buried in a | ||
// predicate. | ||
// We can't ask the predicate "Are you a function that always returns | ||
// false?" | ||
// So given that the cpp backend truly has no target arch, it is skipped. | ||
if (Name != "cpp") { | ||
Triple::ArchType Arch = Triple::getArchTypeForLLVMName(Name); | ||
EXPECT_NE(Arch, Triple::UnknownArch); | ||
++Count; | ||
} | ||
} | ||
ASSERT_NE(Count, 0); | ||
} | ||
|
||
} // end namespace |