From 3d398aa5c2be8919bbc0144bce611c48119bc861 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Mon, 26 Jul 2010 16:29:14 +0000 Subject: [PATCH] When LIBCLANG_CODE_COMPLETION_LOGGING is set in the environment, log code-completion command lines to stderr git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109395 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Driver/CC1Options.td | 3 +++ tools/libclang/CIndexCodeCompletion.cpp | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/include/clang/Driver/CC1Options.td b/include/clang/Driver/CC1Options.td index 36fdbf74d9..b17af4b8c8 100644 --- a/include/clang/Driver/CC1Options.td +++ b/include/clang/Driver/CC1Options.td @@ -505,6 +505,9 @@ def include_pch : Separate<"-include-pch">, MetaVarName<"">, HelpText<"Include precompiled header file">; def include_pth : Separate<"-include-pth">, MetaVarName<"">, HelpText<"Include file before parsing">; +def use_preamble_EQ : Joined<"-use-preamble=">, + HelpText<"Assume that the precompiled header is a precompiled preamble " + "covering the first N bytes of the main file">; def token_cache : Separate<"-token-cache">, MetaVarName<"">, HelpText<"Use specified token cache file">; def U : JoinedOrSeparate<"-U">, MetaVarName<"">, diff --git a/tools/libclang/CIndexCodeCompletion.cpp b/tools/libclang/CIndexCodeCompletion.cpp index 277fadf683..2df5241d02 100644 --- a/tools/libclang/CIndexCodeCompletion.cpp +++ b/tools/libclang/CIndexCodeCompletion.cpp @@ -22,6 +22,8 @@ #include "llvm/ADT/StringExtras.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/System/Program.h" +#include +#include #ifdef UDP_CODE_COMPLETION_LOGGER #include "clang/Basic/Version.h" @@ -273,6 +275,8 @@ CXCodeCompleteResults *clang_codeComplete(CXIndex CIdx, #endif #endif + bool EnableLogging = getenv("LIBCLANG_CODE_COMPLETION_LOGGING") != 0; + // The indexer, which is mainly used to determine where diagnostics go. CIndexer *CXXIdx = static_cast(CIdx); @@ -348,6 +352,15 @@ CXCodeCompleteResults *clang_codeComplete(CXIndex CIdx, argv.push_back(arg); } + if (EnableLogging) { + std::string Log = ClangPath.str(); + for (unsigned I = 0, N = argv.size(); I != N; ++I) { + Log += ' '; + Log += argv[I]; + } + fprintf(stderr, "libclang (Code Completion): %s\n", Log.c_str()); + } + // Add the null terminator. argv.push_back(NULL); @@ -363,6 +376,8 @@ CXCodeCompleteResults *clang_codeComplete(CXIndex CIdx, llvm::sys::Path DiagnosticsFile(tmpResultsFileName); TemporaryFiles.push_back(DiagnosticsFile); + + // Invoke 'clang'. llvm::sys::Path DevNull; // leave empty, causes redirection to /dev/null // on Unix or NUL (Windows). -- 2.40.0