diff options
| author | Hans Wennborg <hans@chromium.org> | 2021-04-13 13:59:03 +0200 |
|---|---|---|
| committer | Hans Wennborg <hans@chromium.org> | 2021-04-14 17:01:51 +0200 |
| commit | f29dcbdde10c86cfd89196fc2aa0e7f6ca3c9c4e (patch) | |
| tree | 74c6ced9c741460e0a67ca0f6933be643f2febb2 /clang/lib/Basic/FileManager.cpp | |
| parent | c4c9e4d6df3c492cf86728288b14a9bc718f6e2d (diff) | |
| download | llvm-f29dcbdde10c86cfd89196fc2aa0e7f6ca3c9c4e.zip llvm-f29dcbdde10c86cfd89196fc2aa0e7f6ca3c9c4e.tar.gz llvm-f29dcbdde10c86cfd89196fc2aa0e7f6ca3c9c4e.tar.bz2 | |
Add flag for showing skipped headers in -H / --show-includes output
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.
Differential revision: https://reviews.llvm.org/D100480
Diffstat (limited to 'clang/lib/Basic/FileManager.cpp')
0 files changed, 0 insertions, 0 deletions
