diff options
author | Oleg Ranevskyy <oranevskyy@accesssoftek.com> | 2016-03-30 21:30:30 +0000 |
---|---|---|
committer | Oleg Ranevskyy <oranevskyy@accesssoftek.com> | 2016-03-30 21:30:30 +0000 |
commit | b88d2474dfdc9f92b3e859f90d065a8a8e1d4350 (patch) | |
tree | dfb07cd95b96a44996e8e76bd16f8fec2aa6aa8a /lldb/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py | |
parent | ef0fe1eed827ba8f9c6d76200821dc24ec6f038f (diff) | |
download | bcm5719-llvm-b88d2474dfdc9f92b3e859f90d065a8a8e1d4350.tar.gz bcm5719-llvm-b88d2474dfdc9f92b3e859f90d065a8a8e1d4350.zip |
[Clang][ARM] __va_list declaration is not saved in ASTContext causing compilation error or crash
Summary:
When the code is compiled for arm32 and the builtin `__va_list` declaration is created by `CreateAAPCSABIBuiltinVaListDecl`, the declaration is not saved in the `ASTContext` which may lead to a compilation error or crash.
Minimal reproducer I was able to find:
**header.h**
```
#include <stdarg.h>
typedef va_list va_list_1;
```
**test.cpp**
```
typedef __builtin_va_list va_list_2;
void foo(const char* format, ...) { va_list args; va_start( args, format ); }
```
Steps to reproduce:
```
clang -x c++-header --target=armv7l-linux-eabihf header.h
clang -c -include header.h --target=armv7l-linux-eabihf test.cpp
```
Compilation error:
```
error: non-const lvalue reference to type '__builtin_va_list'
cannot bind to a value of unrelated type 'va_list' (aka '__builtin_va_list')
```
Compiling the same code as a C source leads to a crash:
```
clang --target=armv7l-linux-eabihf header.h
clang -c -x c -include header.h --target=armv7l-linux-eabihf test.cpp
```
Reviewers: logan, rsmith
Subscribers: cfe-commits, asl, aemerson, rengolin
Differential Revision: http://reviews.llvm.org/D18557
llvm-svn: 264930
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py')
0 files changed, 0 insertions, 0 deletions