summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/TreeTransform.h
diff options
context:
space:
mode:
authorSerge Pavlov <sepavloff@gmail.com>2014-02-06 03:49:11 +0000
committerSerge Pavlov <sepavloff@gmail.com>2014-02-06 03:49:11 +0000
commit774c6d03b2b0a0bf20c017756c988e7ad5747953 (patch)
tree7da5aafc845c9473e92a447c6780d53a10692764 /clang/lib/Sema/TreeTransform.h
parentd461244972ebab3bdfaaadbea212ed755c97adf1 (diff)
downloadbcm5719-llvm-774c6d03b2b0a0bf20c017756c988e7ad5747953.tar.gz
bcm5719-llvm-774c6d03b2b0a0bf20c017756c988e7ad5747953.zip
Allow transformation of VariableArray to ConstantArray.
In the following code: struct A { static const int sz; }; template<class T> void f() { T arr[A::sz]; } the array 'arr' is represented as a variable size array in the template. If 'A::sz' gets value below in the translation unit, the array in instantiation can turn into constant size array. This change fixes PR18633. Differential Revision: http://llvm-reviews.chandlerc.com/D2688 llvm-svn: 200899
Diffstat (limited to 'clang/lib/Sema/TreeTransform.h')
-rw-r--r--clang/lib/Sema/TreeTransform.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h
index 93cb4833212..7afed1a4480 100644
--- a/clang/lib/Sema/TreeTransform.h
+++ b/clang/lib/Sema/TreeTransform.h
@@ -3929,7 +3929,9 @@ TreeTransform<Derived>::TransformVariableArrayType(TypeLocBuilder &TLB,
return QualType();
}
- VariableArrayTypeLoc NewTL = TLB.push<VariableArrayTypeLoc>(Result);
+ // We might have constant size array now, but fortunately it has the same
+ // location layout.
+ ArrayTypeLoc NewTL = TLB.push<ArrayTypeLoc>(Result);
NewTL.setLBracketLoc(TL.getLBracketLoc());
NewTL.setRBracketLoc(TL.getRBracketLoc());
NewTL.setSizeExpr(Size);
OpenPOWER on IntegriCloud