diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-11-13 01:03:15 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-11-13 01:03:15 +0000 |
commit | 4f10a3e9f058bb8fdcfc3799a1939d1391b96de3 (patch) | |
tree | 8e3cdce46ca059f14eba4564188387e61a0113b5 /clang/test | |
parent | 36675b75fbeb6578d510db29ade03596b4bc32af (diff) | |
download | bcm5719-llvm-4f10a3e9f058bb8fdcfc3799a1939d1391b96de3.tar.gz bcm5719-llvm-4f10a3e9f058bb8fdcfc3799a1939d1391b96de3.zip |
[preprocessor] When #including something that contributes no tokens at all,
don't recursively continue lexing.
This avoids a stack overflow with a sequence of many empty #includes.
rdar://11988695
llvm-svn: 167801
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/Index/Inputs/empty.h | 0 | ||||
-rw-r--r-- | clang/test/Index/pp-many-includes.c | 208 |
2 files changed, 208 insertions, 0 deletions
diff --git a/clang/test/Index/Inputs/empty.h b/clang/test/Index/Inputs/empty.h new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/clang/test/Index/Inputs/empty.h diff --git a/clang/test/Index/pp-many-includes.c b/clang/test/Index/pp-many-includes.c new file mode 100644 index 00000000000..8a53b4fc64a --- /dev/null +++ b/clang/test/Index/pp-many-includes.c @@ -0,0 +1,208 @@ +// RUN: env LIBCLANG_THREAD_SMALLSTACK=1 c-index-test -index-file %s | FileCheck %s + +// rdar://11988695 +// Check that we don't get stack overflow while including a lot of empty includes. + +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" +#include "Inputs/empty.h" + +// CHECK: [indexDeclaration]: kind: function | name: foo +void foo(); |