Disallow multiple instances of PluginPriority.

Several instances of PluginPriority in a single file most probably signifies a
programming error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84350 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Mikhail Glushenkov 2009-10-17 20:08:30 +00:00
parent 6b4967e1a6
commit 2cea7bdef9
2 changed files with 20 additions and 4 deletions

View File

@ -0,0 +1,10 @@
// Check that multiple plugin priorities are not allowed.
// RUN: ignore tblgen -I %p/../../include --gen-llvmc %s |& grep "More than one 'PluginPriority' instance found"
include "llvm/CompilerDriver/Common.td"
def Graph : CompilationGraph<[]>;
def Priority1 : PluginPriority<1>;
def Priority2 : PluginPriority<2>;

View File

@ -775,11 +775,17 @@ void FillInEdgeVector(RecordVector::const_iterator B,
/// CalculatePriority - Calculate the priority of this plugin.
int CalculatePriority(RecordVector::const_iterator B,
RecordVector::const_iterator E) {
int total = 0;
for (; B!=E; ++B) {
total += static_cast<int>((*B)->getValueAsInt("priority"));
int priority = 0;
if (B != E) {
priority = static_cast<int>((*B)->getValueAsInt("priority"));
if (++B != E)
throw std::string("More than one 'PluginPriority' instance found: "
"most probably an error!");
}
return total;
return priority;
}
/// NotInGraph - Helper function object for FilterNotInGraph.