Proposal to change the PPCallbacks interface


the attached patch is a proposal to add the "raw path" (== the path
that a file was accessed by in the file manager) into the PPCallback's
InclusionDirective call.

The problem this solves is that we're trying to replay the compilation
after observing it via PPCallbacks by mapping virtual files into the
Considering the following example:

#include "../a/a.h"

int a();
#include "lib/b/b.h"
#include "lib/a/a.h"
int main() { return 0; }

When compiled with -Ilib/b, the FileEntry in the InclusionDirective
will have a getName() leading to "lib/b/../a/a.h" for both include
directives of a.h because of inode caching.
When we replay this compilation, we need to inject the raw path under
which the include is looked up, which means that we need to get a.h
into the cache for "./lib/a/a.h".

Is this an acceptable solution?

clang-raw-path.diff (18.5 KB)

FYI, lacking any specific objections, I worked with Manuel to fix some stylistic issues and committed it in r127742. Further comments on the particulars of the implementation welcome.