Straw man for instantiation of expressions. Use it to instantiate the
width of bitfields. 

I'll be burning this down and replacing it with a properly-dispatched
implementation like the one used for types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66796 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/Sema.h b/lib/Sema/Sema.h
index 8f03319..0ea1be3 100644
--- a/lib/Sema/Sema.h
+++ b/lib/Sema/Sema.h
@@ -1805,6 +1805,11 @@
   QualType InstantiateType(QualType T, const TemplateArgument *TemplateArgs,
                            unsigned NumTemplateArgs,
                            SourceLocation Loc, DeclarationName Entity);
+
+  OwningExprResult InstantiateExpr(Expr *E, 
+                                   const TemplateArgument *TemplateArgs,
+                                   unsigned NumTemplateArgs);
+
   bool 
   InstantiateBaseSpecifiers(ClassTemplateSpecializationDecl *ClassTemplateSpec,
                             ClassTemplateDecl *ClassTemplate);
@@ -2305,7 +2310,7 @@
 template <typename T>
 class ExprOwningPtr : public Action::ExprArg {
 public:
-  ExprOwningPtr(Sema *S, T *expr) : Action::ExprArg(*S, expr) {};
+  ExprOwningPtr(Sema *S, T *expr) : Action::ExprArg(*S, expr) {}
   
   void reset(T* p) { Action::ExprArg::operator=(p); }
   T* get() const { return static_cast<T*>(Action::ExprArg::get()); }