]> granicus.if.org Git - clang/commit
[Preprocessor] Don't avoid entering included files after hitting a fatal error.
authorVolodymyr Sapsai <vsapsai@apple.com>
Fri, 7 Dec 2018 20:29:54 +0000 (20:29 +0000)
committerVolodymyr Sapsai <vsapsai@apple.com>
Fri, 7 Dec 2018 20:29:54 +0000 (20:29 +0000)
commit24a89effee8446ebcb8fec549855358db6490312
tree1e192f88c9616baa78c2a858098a4947c844b00b
parentaf59bfdfc36222037c8f3ba0d868119f6910760e
[Preprocessor] Don't avoid entering included files after hitting a fatal error.

Change in r337953 violated the contract for `CXTranslationUnit_KeepGoing`:

> Do not stop processing when fatal errors are encountered.

Use different approach to fix long processing times with multiple inclusion
cycles. Instead of stopping preprocessing for fatal errors, do this after
reaching the max allowed include depth and only for the files that were
processed already. It is likely but not guaranteed those files cause a cycle.

rdar://problem/46108547

Reviewers: erik.pilkington, arphaman

Reviewed By: erik.pilkington

Subscribers: jkorous, dexonsmith, ilya-biryukov, Dmitry.Kozhevnikov

Differential Revision: https://reviews.llvm.org/D55095

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@348641 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Lex/Preprocessor.h
lib/Lex/PPDirectives.cpp
test/Index/Inputs/cycle.h [new file with mode: 0644]
test/Index/keep-going-include-cycle.c [new file with mode: 0644]
test/Index/keep-going.cpp