diff options
author | Serge Pavlov <sepavloff@gmail.com> | 2014-02-06 03:49:11 +0000 |
---|---|---|
committer | Serge Pavlov <sepavloff@gmail.com> | 2014-02-06 03:49:11 +0000 |
commit | 774c6d03b2b0a0bf20c017756c988e7ad5747953 (patch) | |
tree | 7da5aafc845c9473e92a447c6780d53a10692764 /clang/lib/Sema/TreeTransform.h | |
parent | d461244972ebab3bdfaaadbea212ed755c97adf1 (diff) | |
download | bcm5719-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.h | 4 |
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); |