diff options
| author | Anders Carlsson <andersca@mac.com> | 2009-01-30 16:41:04 +0000 | 
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2009-01-30 16:41:04 +0000 | 
| commit | 221483dd4e6c4241d1ed0f1545bd97285c83a215 (patch) | |
| tree | 7224a37d939e8a3003e29042e10e61086968e2e3 | |
| parent | 3b6a4bd891c6aea7da24322d640f237fb7a48918 (diff) | |
| download | bcm5719-llvm-221483dd4e6c4241d1ed0f1545bd97285c83a215.tar.gz bcm5719-llvm-221483dd4e6c4241d1ed0f1545bd97285c83a215.zip | |
Make sure to cast the VLA size of array to the type of size_t. Fixes PR3442.
llvm-svn: 63394
| -rw-r--r-- | clang/lib/CodeGen/CGExprScalar.cpp | 5 | ||||
| -rw-r--r-- | clang/test/CodeGen/sizeof-vla.c | 13 | 
2 files changed, 17 insertions, 1 deletions
| diff --git a/clang/lib/CodeGen/CGExprScalar.cpp b/clang/lib/CodeGen/CGExprScalar.cpp index 1d389b6049c..44eefea71db 100644 --- a/clang/lib/CodeGen/CGExprScalar.cpp +++ b/clang/lib/CodeGen/CGExprScalar.cpp @@ -684,7 +684,10 @@ ScalarExprEmitter::VisitSizeOfAlignOfExpr(const SizeOfAlignOfExpr *E) {          // sizeof(type) - make sure to emit the VLA size.          CGF.EmitVLASize(TypeToSize);        } -      return CGF.GetVLASize(VAT); +       +      llvm::Value *VLASize = CGF.GetVLASize(VAT); +      return Builder.CreateIntCast(VLASize, ConvertType(E->getType()),  +                                   false, "conv");      }    } diff --git a/clang/test/CodeGen/sizeof-vla.c b/clang/test/CodeGen/sizeof-vla.c new file mode 100644 index 00000000000..d49bf120975 --- /dev/null +++ b/clang/test/CodeGen/sizeof-vla.c @@ -0,0 +1,13 @@ +// RUN: clang -triple x86_64-unknown-unknown -emit-llvm -o %t %s + +// PR3442 + +static void *g(unsigned long len); + +void +f(int n) +{ + unsigned begin_set[n]; +  + g(sizeof(begin_set)); +} | 

