Adding initial support for the semantic analysis of template requirements. This patch adds features for reducing requires clauses into logical formulas comprised only of atomic propositions and logical connectives. The next patch will add inlining for constraint predicates. I had hoped to add the file as constraint.cc, but the build system in this version doesn't seem to have to build support for .cc files (kept getting "no such file: cp/constraint.o", but adding the file as .c worked just fine. 2013-03-11 Andrew Sutton * gcc/cp/Make-lang.in: Add constraint.c * gcc/cp/constraint.c: New (conjoin_requirements): New (disjoin_requirements): New (requirement_reduction): New class (reduce_requirements): New * gcc/cp/cp-tree.h (reduce_requrements): New (conjoin_requirements): New (disjoin_requirements): New * gcc/cp/cp-tree.h (finish_template_template_parm) Comments. * gcc/cp/semantics.c (finish_template_requirements) Start working with requirements.