summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2012-11-13 01:03:15 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2012-11-13 01:03:15 +0000
commit4f10a3e9f058bb8fdcfc3799a1939d1391b96de3 (patch)
tree8e3cdce46ca059f14eba4564188387e61a0113b5 /clang/test
parent36675b75fbeb6578d510db29ade03596b4bc32af (diff)
downloadbcm5719-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.h0
-rw-r--r--clang/test/Index/pp-many-includes.c208
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();
OpenPOWER on IntegriCloud