summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2011-06-16 02:55:56 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2011-06-16 02:55:56 +0000
commit0cc0929efcb5a137c351cd7e2fa70b0e2e97f313 (patch)
tree056bdd177ace41a6aca7a36b9b2c69f5105a60e5
parente8e1e4444bf10df879068947e8e5f430e7fc2827 (diff)
Make sure to pass an unsigned to a printf format that is always %u.
This should unbreak the native ARM testers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133141 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--utils/TableGen/SetTheory.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/utils/TableGen/SetTheory.cpp b/utils/TableGen/SetTheory.cpp
index ade18255767..bee6763fb05 100644
--- a/utils/TableGen/SetTheory.cpp
+++ b/utils/TableGen/SetTheory.cpp
@@ -155,10 +155,15 @@ struct SequenceOp : public SetTheory::Operator {
From = II->getValue();
else
throw "From must be an integer: " + Expr->getAsString();
+ if (From < 0 || From >= UINT_MAX)
+ throw "From out of range";
+
if (IntInit *II = dynamic_cast<IntInit*>(Expr->arg_begin()[2]))
To = II->getValue();
else
throw "From must be an integer: " + Expr->getAsString();
+ if (To < 0 || To >= UINT_MAX)
+ throw "To out of range";
RecordKeeper &Records =
dynamic_cast<DefInit&>(*Expr->getOperator()).getDef()->getRecords();
@@ -167,7 +172,7 @@ struct SequenceOp : public SetTheory::Operator {
for (To += Step; From != To; From += Step) {
std::string Name;
raw_string_ostream OS(Name);
- OS << format(Format.c_str(), From);
+ OS << format(Format.c_str(), unsigned(From));
Record *Rec = Records.getDef(OS.str());
if (!Rec)
throw "No def named '" + Name + "': " + Expr->getAsString();