[PATCH] D100480: Add flag for showing skipped headers in -H / --show-includes output
Hans Wennborg via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 14 07:48:15 PDT 2021
hans created this revision.
hans added reviewers: thakis, rnk.
Herald added subscribers: jansvoboda11, dang.
hans requested review of this revision.
Herald added a project: clang.
Consider the following set of files:
a.cc:
#include "a.h"
a.h:
#ifndef A_H
#define A_H
#include "b.h"
#include "c.h" // This gets "skipped".
#endif
b.h:
#ifndef B_H
#define B_H
#include "c.h"
#endif
c.h:
#ifndef C_H
#define C_H
void c();
#endif
And the output of the -H option:
$ clang -c -H a.cc
. ./a.h
.. ./b.h
... ./c.h
Note that the include of `c.h` in `a.h` is not shown in the output. (GCC does the same.) This is because of the include guard optimization: clang knows `c.h` is covered by an include guard which is already defined, so when it sees the include in `a.h`, it skips it. The same would have happened if `#pragma once` were used instead of include guards.
However, `a.h` *does* include `c.h`, and it may be useful to show that in the `-H` output. This patch adds a flag for doing that.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D100480
Files:
clang/include/clang/Driver/Options.td
clang/include/clang/Frontend/DependencyOutputOptions.h
clang/lib/Frontend/HeaderIncludeGen.cpp
clang/test/Frontend/Inputs/test.h
clang/test/Frontend/Inputs/test2.h
clang/test/Frontend/print-header-includes.c
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D100480.337444.patch
Type: text/x-patch
Size: 4633 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210414/c5038118/attachment.bin>
More information about the cfe-commits
mailing list