]> granicus.if.org Git - clang/commitdiff
Fix -H. It was pretty broken.
authorSebastian Redl <sebastian.redl@getdesigned.at>
Thu, 14 Apr 2011 14:07:45 +0000 (14:07 +0000)
committerSebastian Redl <sebastian.redl@getdesigned.at>
Thu, 14 Apr 2011 14:07:45 +0000 (14:07 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129514 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Frontend/HeaderIncludeGen.cpp

index b77badf77f297c8e5b09be6cdb8b032f8ddf68e4..51dec967cd6bd8fff530e9ede37248c0e459dda7 100644 (file)
@@ -82,15 +82,18 @@ void HeaderIncludesCallback::FileChanged(SourceLocation Loc,
   // Adjust the current include depth.
   if (Reason == PPCallbacks::EnterFile) {
     ++CurrentIncludeDepth;
-  } else {
+  } else if (Reason == PPCallbacks::ExitFile) {
     if (CurrentIncludeDepth)
       --CurrentIncludeDepth;
 
     // We track when we are done with the predefines by watching for the first
-    // place where we drop back to a nesting depth of 0.
-    if (CurrentIncludeDepth == 0 && !HasProcessedPredefines)
+    // place where we drop back to a nesting depth of 1.
+    if (CurrentIncludeDepth == 1 && !HasProcessedPredefines)
       HasProcessedPredefines = true;
-  }
+
+    return;
+  } else
+    return;
 
   // Show the header if we are (a) past the predefines, or (b) showing all
   // headers and in the predefines at a depth past the initial file and command
@@ -107,7 +110,8 @@ void HeaderIncludesCallback::FileChanged(SourceLocation Loc,
 
     llvm::SmallString<256> Msg;
     if (ShowDepth) {
-      for (unsigned i = 0; i != CurrentIncludeDepth; ++i)
+      // The main source file is at depth 1, so skip one dot.
+      for (unsigned i = 1; i != CurrentIncludeDepth; ++i)
         Msg += '.';
       Msg += ' ';
     }