llvm-project/clang/test/Frontend
Alex Lorenz 6e2d36b60b Add clang source minimizer that reduces source to directives
that might affect the dependency list for a compilation

This commit introduces a dependency directives source minimizer to clang
that minimizes header and source files to the minimum necessary preprocessor
directives for evaluating includes. It reduces the source down to #define, #include,

The source minimizer works by lexing the input with a custom fast lexer that recognizes
the preprocessor directives it cares about, and emitting those directives in the minimized source.
It ignores source code, comments, and normalizes whitespace. It gives up and fails if seems
any directives that it doesn't recognize as valid (e.g. #define 0).

In addition to the source minimizer this patch adds a
-print-dependency-directives-minimized-source CC1 option that allows you to invoke the minimizer
from clang directly.

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

llvm-svn: 362459
2019-06-03 22:59:17 +00:00
..
Inputs Move test input file into same directory as test. NFC 2018-05-08 00:29:21 +00:00
Weverything.c
Wno-everything.c
aarch64-target-cpu.c [AArch64] Vulcan is now ThunderXT99 2017-03-07 21:24:53 +00:00
absolute-paths-windows.test Do not resolve directory junctions for `-fdiagnostics-absolute-paths` on Windows. 2019-05-24 04:46:22 +00:00
absolute-paths.c Add support for -fdiagnostics-absolute-paths: printing absolute paths in diagnostics 2016-08-26 15:45:36 +00:00
ast-codegen.c Recommit r324107 again. 2018-02-07 22:15:33 +00:00
ast-main.c [darwin] parse the SDK settings from SDKSettings.json if it exists and 2018-12-17 19:19:15 +00:00
ast-main.cpp [darwin] parse the SDK settings from SDKSettings.json if it exists and 2018-12-17 19:19:15 +00:00
backend-diagnostic.c
cc1-return-codes.c
clang-abi-compat.cpp Make test/Frontend/clang-abi-compat.cpp pass when the version goes to 8 2018-08-01 13:19:14 +00:00
compiler-options-dump.cpp Add a new driver mode to dump compiler feature and extension options. 2018-05-31 13:57:09 +00:00
cpp-output.c
darwin-eabi.c
darwin-version.c Allow iOS and tvOS version numbers with 2-digit major version numbers. 2016-07-18 20:29:14 +00:00
dependency-gen-escaping.c Print correctly dependency paths on Windows 2018-09-13 14:27:32 +00:00
dependency-gen-extradeps-phony.c Fix emission of phony dependency targets when adding extra deps 2018-05-29 13:07:58 +00:00
dependency-gen-has-include.c Add a callback for `__has_include` and use it for dependency scanning. 2018-09-18 23:27:02 +00:00
dependency-gen-symlink.c Track skipped files in dependency scanning. 2018-05-01 23:59:33 +00:00
dependency-gen.c Print correctly dependency paths on Windows 2018-09-13 14:27:32 +00:00
dependency-generation-crash.c
diagnostics-option-names.c
diagnostics-order.c [VerifyDiagnosticConsumer] support -verify=<prefixes> 2017-12-16 02:23:22 +00:00
disable-output.c
embed-bitcode.ll Change embed-bitcode linkage type 2016-05-16 18:54:58 +00:00
exceptions.c
fixed_point_add.c [Fixed Point Arithmetic] Fixed Point Addition Constant Expression Evaluation 2019-01-18 21:04:25 +00:00
fixed_point_bit_widths.c [Fixed Point Arithmetic] Fixed Point Precision Bits and Fixed Point Literals 2018-06-20 17:19:40 +00:00
fixed_point_comparisons.c [Fixed Point Arithmetic] Fixed Point Comparisons 2019-02-21 20:50:09 +00:00
fixed_point_conversions.c [Fixed Point Arithmetic] Fixed Point and Integer Conversions 2019-03-06 00:28:43 +00:00
fixed_point_declarations.c [Fixed Point Arithmetic] Fixed Point Constant 2018-08-06 16:42:37 +00:00
fixed_point_errors.c [Fixed Point Arithmetic] Fixed Point and Integer Conversions 2019-03-06 00:28:43 +00:00
fixed_point_errors.cpp [Fixed Point Arithmetic] Fix for bug where integer literals could be treated as fixed point literals 2018-07-17 14:58:49 +00:00
fixed_point_not_enabled.c [Fixed Point Arithmetic] Fix for bug where integer literals could be treated as fixed point literals 2018-07-17 14:58:49 +00:00
fixed_point_same_fbits.c [Fixed Point Arithmetic] Rename `-fsame-fbits` flag 2018-06-29 17:08:19 +00:00
fixed_point_sub.c [Fixed Point Arithmetic] Fixed Point Subtraction 2019-01-16 19:53:50 +00:00
fixed_point_to_bool.c [Fixed Point Arithmetic] Refactor fixed point casts 2018-10-26 16:12:12 +00:00
fixed_point_unknown_conversions.c [Fixed Point Arithmetic] Fixed Point and Integer Conversions 2019-03-06 00:28:43 +00:00
force-include-not-found.c
ftime-report-template-decl.cpp Improve checks in test/Frontend/ftime-report-template-decl.cpp 2018-04-23 18:05:35 +00:00
gnu-inline.c Don't accept -std= values that would switch us to a different source language. 2017-04-26 23:44:33 +00:00
gnu-mcount.c Always use __mcount on NetBSD. Some platforms don't provide _mcount. 2018-07-17 13:13:34 +00:00
hexagon-target-basic.c
iframework.c Add -iframeworkwithsysroot compiler option 2017-03-13 11:17:41 +00:00
include-duplicate-removal.c [Frontend] Fix an issue where a quoted search path is incorrectly 2016-12-02 09:51:51 +00:00
int128.cpp Provide __GLIBCXX_TYPE_INT_N_0 and __GLIBCXX_BITSIZE_INT_N_0 when in C++ gnu language extensions. 2016-07-21 07:44:41 +00:00
invalid-o-level.c
ir-support-codegen.ll
ir-support-errors.ll
ir-support.c
lit.local.cfg Do not resolve directory junctions for `-fdiagnostics-absolute-paths` on Windows. 2019-05-24 04:46:22 +00:00
macro_defined_type.cpp Add target triple to test. 2019-05-10 20:07:47 +00:00
macros.c
mfpmath.c
minimize_source_to_dependency_directives.c Add clang source minimizer that reduces source to directives 2019-06-03 22:59:17 +00:00
mips-long-double.c
noderef.c [Sema/Attribute] Check for noderef attribute 2018-12-06 01:05:54 +00:00
noderef.cpp [Sema/Attribute] Check for noderef attribute 2018-12-06 01:05:54 +00:00
noderef_on_non_pointers.m [Sema/Attribute] Check for noderef attribute 2018-12-06 01:05:54 +00:00
noderef_templates.cpp [Sema/Attribute] Check for noderef attribute 2018-12-06 01:05:54 +00:00
nostdlib-for-asmpp.s [frontend] Don't include the C++ stdlib for -x assembler-with-cpp 2018-06-28 23:23:45 +00:00
objc-bool-is-bool.m [Frontend] The macro that describes the Objective-C bool type should 2017-01-20 16:48:25 +00:00
opencl.cl [OpenCL] Added -std/-cl-std=c++ 2018-04-12 14:17:04 +00:00
optimization-remark-analysis.c Add backend dignostic printer for unsupported features 2016-02-02 13:52:52 +00:00
optimization-remark-extra-analysis.c Fix ClangDiagnosticHandler::is*RemarkEnabled members 2017-09-19 17:59:40 +00:00
optimization-remark-line-directive.c
optimization-remark-options.c [ValueTracking] Enabling ValueTracking patch by default (recommit). Part 1. 2017-08-10 11:22:52 +00:00
optimization-remark-with-hotness.c Provide reason messages for unviable inlining 2019-02-01 10:44:43 +00:00
optimization-remark.c Fix the behavior of clang's -w flag. 2019-01-29 19:33:48 +00:00
output-failures.c Hot fix two test regressions (%T vs %t) 2019-02-03 15:49:11 +00:00
plugin-annotate-functions.c Add a PragmaHandler Registry for plugins to add PragmaHandlers to 2016-04-04 14:22:58 +00:00
plugin-delayed-template.cpp
plugin-unknown.c Validate -add-plugin arguments. 2019-01-03 18:26:06 +00:00
plugin-vs-debug-info.cpp Give this test that uses Itanium mangling a triple 2016-11-30 00:31:16 +00:00
plugins.c Revert r260266 (and r260276), "clang-cl: Enable plugins on Windows" 2016-02-11 16:43:08 +00:00
pp-only-no-editor-placeholders.c [PR33394] Avoid lexing editor placeholders when Clang is used only 2017-06-16 20:13:39 +00:00
preprocessed-input.i Use filename in linemarker when compiling preprocessed source (Revised) 2017-03-07 20:20:23 +00:00
preprocessed-output-macro-first-token.c
print-header-includes.c [clang-cl] Print /showIncludes to stderr, if used in combination with /E, /EP or /P 2018-05-04 15:58:31 +00:00
profile-sample-use-loc-tracking.c Use NoDebug compile units to mark debug metadata used only for sample-based 2016-04-08 22:43:06 +00:00
region-pragmas.c Always allow "#pragma region". 2018-01-27 00:25:29 +00:00
remove-file-on-signal.c [Support] Use FILE_SHARE_DELETE to fix RemoveFileOnSignal on Windows 2017-08-04 21:52:00 +00:00
rewrite-includes-bom.c
rewrite-includes-cli-include.c
rewrite-includes-eof.c
rewrite-includes-filenotfound.c PR32848: There isn't necessarily a FileChanged or FileSkipped for every InclusionDirective callback. 2017-06-02 01:05:44 +00:00
rewrite-includes-header-cmd-line.c
rewrite-includes-invalid-hasinclude.c
rewrite-includes-line-markers.c PR26771: don't forget the " 2" (returning from #included file) linemarker after including an empty file with -frewrite-includes. 2017-04-29 00:54:03 +00:00
rewrite-includes-messages.c Use POSIX argument syntax in test rewrite-includes-messages.c 2018-01-04 23:03:48 +00:00
rewrite-includes-missing.c
rewrite-includes-modules.c Add pragma to perform module import and use it in -E output. 2017-04-29 00:34:47 +00:00
rewrite-includes-warnings.c
rewrite-includes.c Fix evaluation of `__has_include_next` during -frewrite-includes. 2018-04-13 17:43:15 +00:00
rewrite-macros.c
source-col-map.c
stats-file.c Hot fix two test regressions (%T vs %t) 2019-02-03 15:49:11 +00:00
stdin.c
stdlang.c [OpenCL] Added -std/-cl-std=c++ 2018-04-12 14:17:04 +00:00
system-header-line-directive-ms-lineendings.c Remove .gitattributes, add comment to lineendings. 2017-08-24 23:25:05 +00:00
system-header-line-directive.c Add test coverage for recent behavior change in GNU line marker pre-processing 2017-05-23 16:09:13 +00:00
system-header-prefix.c
trigraphs.cpp
undef.c
unknown-arg.c lld-link, clang: Treat non-existent input files as possible spellos for option flags 2019-05-23 17:58:33 +00:00
unknown-pragmas.c
verify-directive.h
verify-fatal.c
verify-ignore-unexpected.c
verify-marker.c [verify] Add support for location markers in directives. 2019-04-13 04:33:39 +00:00
verify-marker.h [verify] Add support for location markers in directives. 2019-04-13 04:33:39 +00:00
verify-prefixes.c [VerifyDiagnosticConsumer] support -verify=<prefixes> 2017-12-16 02:23:22 +00:00
verify-unknown-arg.c
verify.c
verify2.c
verify2.h
verify3.c
warning-mapping-1.c
warning-mapping-2.c Fix the behavior of clang's -w flag. 2019-01-29 19:33:48 +00:00
warning-mapping-3.c
warning-mapping-4.c Fix the behavior of clang's -w flag. 2019-01-29 19:33:48 +00:00
warning-mapping-5.c Fix the behavior of clang's -w flag. 2019-01-29 19:33:48 +00:00
warning-mapping-6.c Fix the behavior of clang's -w flag. 2019-01-29 19:33:48 +00:00
warning-options.cpp
windows-exceptions.cpp [ADT] Normalize empty triple components 2018-08-08 22:23:57 +00:00
windows-nul.c
x86-target-cpu.c [X86] AMD znver2 enablement 2019-02-26 17:15:36 +00:00
x86_64-nacl-types.cpp