[cfe-commits] r62433 - in /cfe/trunk: include/clang/AST/Stmt.h include/clang/Basic/TargetInfo.h lib/Basic/TargetInfo.cpp lib/CodeGen/CGStmt.cpp lib/Sema/SemaStmt.cpp
Anders Carlsson
andersca at mac.com
Sat Jan 17 15:36:15 PST 2009
Author: andersca
Date: Sat Jan 17 17:36:15 2009
New Revision: 62433
URL: http://llvm.org/viewvc/llvm-project?rev=62433&view=rev
Log:
Change TargetInfo::validateInputConstraint to take begin/end name iterators instead of the number of outputs. No functionality change.
Modified:
cfe/trunk/include/clang/AST/Stmt.h
cfe/trunk/include/clang/Basic/TargetInfo.h
cfe/trunk/lib/Basic/TargetInfo.cpp
cfe/trunk/lib/CodeGen/CGStmt.cpp
cfe/trunk/lib/Sema/SemaStmt.cpp
Modified: cfe/trunk/include/clang/AST/Stmt.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Stmt.h?rev=62433&r1=62432&r2=62433&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/Stmt.h (original)
+++ cfe/trunk/include/clang/AST/Stmt.h Sat Jan 17 17:36:15 2009
@@ -944,6 +944,16 @@
const_outputs_iterator begin_outputs() const { return &Exprs[0]; }
const_outputs_iterator end_outputs() const { return &Exprs[0] + NumOutputs; }
+ // Input name iterator.
+
+ const std::string *begin_output_names() const {
+ return &Names[0];
+ }
+
+ const std::string *end_output_names() const {
+ return &Names[0] + NumOutputs;
+ }
+
// Child iterators
virtual child_iterator child_begin();
Modified: cfe/trunk/include/clang/Basic/TargetInfo.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/TargetInfo.h?rev=62433&r1=62432&r2=62433&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/TargetInfo.h (original)
+++ cfe/trunk/include/clang/Basic/TargetInfo.h Sat Jan 17 17:36:15 2009
@@ -198,8 +198,10 @@
// a constraint is valid and provides information about it.
// FIXME: These should return a real error instead of just true/false.
bool validateOutputConstraint(const char *Name, ConstraintInfo &Info) const;
- bool validateInputConstraint (const char *Name, unsigned NumOutputs,
- ConstraintInfo &info) const;
+ bool validateInputConstraint(const char *Name,
+ const std::string *OutputNamesBegin,
+ const std::string *OutputNamesEnd,
+ ConstraintInfo &info) const;
virtual std::string convertConstraint(const char Constraint) const {
return std::string(1, Constraint);
Modified: cfe/trunk/lib/Basic/TargetInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/TargetInfo.cpp?rev=62433&r1=62432&r2=62433&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/TargetInfo.cpp (original)
+++ cfe/trunk/lib/Basic/TargetInfo.cpp Sat Jan 17 17:36:15 2009
@@ -188,7 +188,8 @@
}
bool TargetInfo::validateInputConstraint(const char *Name,
- unsigned NumOutputs,
+ const std::string *OutputNamesBegin,
+ const std::string *OutputNamesEnd,
ConstraintInfo &info) const {
info = CI_None;
@@ -197,8 +198,9 @@
default:
// Check if we have a matching constraint
if (*Name >= '0' && *Name <= '9') {
+ unsigned NumOutputs = OutputNamesEnd - OutputNamesBegin;
unsigned i = *Name - '0';
-
+
// Check if matching constraint is out of bounds.
if (i >= NumOutputs)
return false;
Modified: cfe/trunk/lib/CodeGen/CGStmt.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGStmt.cpp?rev=62433&r1=62432&r2=62433&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGStmt.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGStmt.cpp Sat Jan 17 17:36:15 2009
@@ -977,7 +977,9 @@
TargetInfo::ConstraintInfo Info;
bool result = Target.validateInputConstraint(InputConstraint.c_str(),
- NumConstraints, Info);
+ S.begin_output_names(),
+ S.end_output_names(),
+ Info);
assert(result && "Failed to parse input constraint"); result=result;
if (i != 0 || S.getNumOutputs() > 0)
Modified: cfe/trunk/lib/Sema/SemaStmt.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaStmt.cpp?rev=62433&r1=62432&r2=62433&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaStmt.cpp (original)
+++ cfe/trunk/lib/Sema/SemaStmt.cpp Sat Jan 17 17:36:15 2009
@@ -897,7 +897,8 @@
TargetInfo::ConstraintInfo info;
if (!Context.Target.validateInputConstraint(InputConstraint.c_str(),
- NumOutputs, info)) {
+ &Names[0],
+ &Names[0] + NumOutputs, info)) {
// FIXME: We currently leak memory here.
return Diag(Literal->getLocStart(),
diag::err_asm_invalid_input_constraint) << InputConstraint;
More information about the cfe-commits
mailing list