r203213 - [Preprocessor] Pass TranslationUnitKind to the preprocessor and if it is TU_Prefix
Argyrios Kyrtzidis
akyrtzi at gmail.com
Sat Mar 8 13:25:18 PST 2014
In r203360, I changed the check to check for TU_Complete.
On Mar 7, 2014, at 9:45 AM, Jordan Rose <jordan_rose at apple.com> wrote:
> Wouldn't we want to avoid this warning for modules as well?
>
> Or rather, it probably doesn't matter for modules, so should we use an existing flag instead? (Is there one?)
>
> Jordan
>
>
> On Mar 6, 2014, at 23:47 , Argyrios Kyrtzidis <akyrtzi at gmail.com> wrote:
>
>> Author: akirtzidis
>> Date: Fri Mar 7 01:47:58 2014
>> New Revision: 203213
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=203213&view=rev
>> Log:
>> [Preprocessor] Pass TranslationUnitKind to the preprocessor and if it is TU_Prefix
>> avoid warning for unused macros.
>>
>> rdar://15034698
>>
>> Modified:
>> cfe/trunk/include/clang/Frontend/CompilerInstance.h
>> cfe/trunk/include/clang/Lex/Preprocessor.h
>> cfe/trunk/lib/Frontend/ChainedIncludesSource.cpp
>> cfe/trunk/lib/Frontend/CompilerInstance.cpp
>> cfe/trunk/lib/Frontend/FrontendAction.cpp
>> cfe/trunk/lib/Lex/PPLexerChange.cpp
>> cfe/trunk/lib/Lex/Preprocessor.cpp
>> cfe/trunk/test/Index/preamble.c
>>
>> Modified: cfe/trunk/include/clang/Frontend/CompilerInstance.h
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CompilerInstance.h?rev=203213&r1=203212&r2=203213&view=diff
>> ==============================================================================
>> --- cfe/trunk/include/clang/Frontend/CompilerInstance.h (original)
>> +++ cfe/trunk/include/clang/Frontend/CompilerInstance.h Fri Mar 7 01:47:58 2014
>> @@ -561,7 +561,7 @@ public:
>>
>> /// Create the preprocessor, using the invocation, file, and source managers,
>> /// and replace any existing one with it.
>> - void createPreprocessor();
>> + void createPreprocessor(TranslationUnitKind TUKind);
>>
>> /// Create the AST context.
>> void createASTContext();
>>
>> Modified: cfe/trunk/include/clang/Lex/Preprocessor.h
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/Preprocessor.h?rev=203213&r1=203212&r2=203213&view=diff
>> ==============================================================================
>> --- cfe/trunk/include/clang/Lex/Preprocessor.h (original)
>> +++ cfe/trunk/include/clang/Lex/Preprocessor.h Fri Mar 7 01:47:58 2014
>> @@ -200,6 +200,9 @@ class Preprocessor : public RefCountedBa
>> /// avoid tearing the Lexer and etc. down).
>> bool IncrementalProcessing;
>>
>> + /// The kind of translation unit we are processing.
>> + TranslationUnitKind TUKind;
>> +
>> /// \brief The code-completion handler.
>> CodeCompletionHandler *CodeComplete;
>>
>> @@ -439,7 +442,8 @@ public:
>> IdentifierInfoLookup *IILookup = 0,
>> bool OwnsHeaderSearch = false,
>> bool DelayInitialization = false,
>> - bool IncrProcessing = false);
>> + bool IncrProcessing = false,
>> + TranslationUnitKind TUKind = TU_Complete);
>>
>> ~Preprocessor();
>>
>>
>> Modified: cfe/trunk/lib/Frontend/ChainedIncludesSource.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ChainedIncludesSource.cpp?rev=203213&r1=203212&r2=203213&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/Frontend/ChainedIncludesSource.cpp (original)
>> +++ cfe/trunk/lib/Frontend/ChainedIncludesSource.cpp Fri Mar 7 01:47:58 2014
>> @@ -104,7 +104,7 @@ ChainedIncludesSource::create(CompilerIn
>> &Clang->getTargetOpts()));
>> Clang->createFileManager();
>> Clang->createSourceManager(Clang->getFileManager());
>> - Clang->createPreprocessor();
>> + Clang->createPreprocessor(TU_Prefix);
>> Clang->getDiagnosticClient().BeginSourceFile(Clang->getLangOpts(),
>> &Clang->getPreprocessor());
>> Clang->createASTContext();
>>
>> Modified: cfe/trunk/lib/Frontend/CompilerInstance.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInstance.cpp?rev=203213&r1=203212&r2=203213&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/Frontend/CompilerInstance.cpp (original)
>> +++ cfe/trunk/lib/Frontend/CompilerInstance.cpp Fri Mar 7 01:47:58 2014
>> @@ -223,7 +223,7 @@ void CompilerInstance::createSourceManag
>>
>> // Preprocessor
>>
>> -void CompilerInstance::createPreprocessor() {
>> +void CompilerInstance::createPreprocessor(TranslationUnitKind TUKind) {
>> const PreprocessorOptions &PPOpts = getPreprocessorOpts();
>>
>> // Create a PTH manager if we are using some form of a token cache.
>> @@ -240,7 +240,10 @@ void CompilerInstance::createPreprocesso
>> PP = new Preprocessor(&getPreprocessorOpts(),
>> getDiagnostics(), getLangOpts(), &getTarget(),
>> getSourceManager(), *HeaderInfo, *this, PTHMgr,
>> - /*OwnsHeaderSearch=*/true);
>> + /*OwnsHeaderSearch=*/true,
>> + /*DelayInitialization=*/false,
>> + /*IncrProcessing=*/false,
>> + TUKind);
>>
>> // Note that this is different then passing PTHMgr to Preprocessor's ctor.
>> // That argument is used as the IdentifierInfoLookup argument to
>>
>> Modified: cfe/trunk/lib/Frontend/FrontendAction.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/FrontendAction.cpp?rev=203213&r1=203212&r2=203213&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/Frontend/FrontendAction.cpp (original)
>> +++ cfe/trunk/lib/Frontend/FrontendAction.cpp Fri Mar 7 01:47:58 2014
>> @@ -291,7 +291,7 @@ bool FrontendAction::BeginSourceFile(Com
>> }
>>
>> // Set up the preprocessor.
>> - CI.createPreprocessor();
>> + CI.createPreprocessor(getTranslationUnitKind());
>>
>> // Inform the diagnostic client we are processing a source file.
>> CI.getDiagnosticClient().BeginSourceFile(CI.getLangOpts(),
>>
>> Modified: cfe/trunk/lib/Lex/PPLexerChange.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PPLexerChange.cpp?rev=203213&r1=203212&r2=203213&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/Lex/PPLexerChange.cpp (original)
>> +++ cfe/trunk/lib/Lex/PPLexerChange.cpp Fri Mar 7 01:47:58 2014
>> @@ -427,11 +427,15 @@ bool Preprocessor::HandleEndOfFile(Token
>> if (!isIncrementalProcessingEnabled())
>> CurPPLexer = 0;
>>
>> - // This is the end of the top-level file. 'WarnUnusedMacroLocs' has collected
>> - // all macro locations that we need to warn because they are not used.
>> - for (WarnUnusedMacroLocsTy::iterator
>> - I=WarnUnusedMacroLocs.begin(), E=WarnUnusedMacroLocs.end(); I!=E; ++I)
>> - Diag(*I, diag::pp_macro_not_used);
>> + if (TUKind != TU_Prefix) {
>> + // This is the end of the top-level file. 'WarnUnusedMacroLocs' has
>> + // collected all macro locations that we need to warn because they are not
>> + // used.
>> + for (WarnUnusedMacroLocsTy::iterator
>> + I=WarnUnusedMacroLocs.begin(), E=WarnUnusedMacroLocs.end();
>> + I!=E; ++I)
>> + Diag(*I, diag::pp_macro_not_used);
>> + }
>>
>> // If we are building a module that has an umbrella header, make sure that
>> // each of the headers within the directory covered by the umbrella header
>>
>> Modified: cfe/trunk/lib/Lex/Preprocessor.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/Preprocessor.cpp?rev=203213&r1=203212&r2=203213&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/Lex/Preprocessor.cpp (original)
>> +++ cfe/trunk/lib/Lex/Preprocessor.cpp Fri Mar 7 01:47:58 2014
>> @@ -59,11 +59,13 @@ Preprocessor::Preprocessor(IntrusiveRefC
>> const TargetInfo *target, SourceManager &SM,
>> HeaderSearch &Headers, ModuleLoader &TheModuleLoader,
>> IdentifierInfoLookup *IILookup, bool OwnsHeaders,
>> - bool DelayInitialization, bool IncrProcessing)
>> + bool DelayInitialization, bool IncrProcessing,
>> + TranslationUnitKind TUKind)
>> : PPOpts(PPOpts), Diags(&diags), LangOpts(opts), Target(target),
>> FileMgr(Headers.getFileMgr()), SourceMgr(SM), HeaderInfo(Headers),
>> TheModuleLoader(TheModuleLoader), ExternalSource(0),
>> Identifiers(opts, IILookup), IncrementalProcessing(IncrProcessing),
>> + TUKind(TUKind),
>> CodeComplete(0), CodeCompletionFile(0), CodeCompletionOffset(0),
>> LastTokenWasAt(false), ModuleImportExpectsIdentifier(false),
>> CodeCompletionReached(0), SkipMainFilePreamble(0, true), CurPPLexer(0),
>>
>> Modified: cfe/trunk/test/Index/preamble.c
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/preamble.c?rev=203213&r1=203212&r2=203213&view=diff
>> ==============================================================================
>> --- cfe/trunk/test/Index/preamble.c (original)
>> +++ cfe/trunk/test/Index/preamble.c Fri Mar 7 01:47:58 2014
>> @@ -2,13 +2,16 @@
>> #include "preamble.h"
>> #include "preamble-with-error.h"
>>
>> +#define MACRO_UNUSED 1
>> +#define MACRO_USED 2
>> +
>> int wibble(int);
>>
>> void f(int x) {
>> -
>> + x = MACRO_USED
>> }
>> // RUN: c-index-test -write-pch %t.pch -x c-header %S/Inputs/prefix.h
>> -// RUN: env CINDEXTEST_EDITING=1 c-index-test -test-load-source-reparse 5 local -I %S/Inputs -include %t %s 2> %t.stderr.txt | FileCheck %s
>> +// RUN: env CINDEXTEST_EDITING=1 c-index-test -test-load-source-reparse 5 local -I %S/Inputs -include %t %s -Wunused-macros 2> %t.stderr.txt | FileCheck %s
>> // RUN: FileCheck -check-prefix CHECK-DIAG %s < %t.stderr.txt
>> // CHECK: preamble.h:1:12: FunctionDecl=bar:1:12 (Definition) Extent=[1:1 - 6:2]
>> // CHECK: preamble.h:4:3: BinaryOperator= Extent=[4:3 - 4:13]
>> @@ -16,10 +19,13 @@ void f(int x) {
>> // CHECK: preamble.h:4:9: UnexposedExpr=ptr1:3:10 Extent=[4:9 - 4:13]
>> // CHECK: preamble.h:4:9: DeclRefExpr=ptr1:3:10 Extent=[4:9 - 4:13]
>> // CHECK: preamble.h:5:10: IntegerLiteral= Extent=[5:10 - 5:11]
>> -// CHECK: preamble.c:5:5: FunctionDecl=wibble:5:5 Extent=[5:1 - 5:16]
>> -// CHECK: preamble.c:5:15: ParmDecl=:5:15 (Definition) Extent=[5:12 - 5:15]
>> +// CHECK: preamble.c:8:5: FunctionDecl=wibble:8:5 Extent=[8:1 - 8:16]
>> +// CHECK: preamble.c:8:15: ParmDecl=:8:15 (Definition) Extent=[8:12 - 8:15]
>> // CHECK-DIAG: preamble.h:4:7:{4:9-4:13}: warning: incompatible pointer types assigning to 'int *' from 'float *'
>> -// RUN: env CINDEXTEST_EDITING=1 c-index-test -code-completion-at=%s:8:1 -I %S/Inputs -include %t %s 2> %t.stderr.txt | FileCheck -check-prefix CHECK-CC %s
>> +// FIXME: Should see:
>> +// preamble.c:5:9: warning: macro is not used
>> +// CHECK-DIAG-NOT: preamble.c:6:9: warning: macro is not used
>> +// RUN: env CINDEXTEST_EDITING=1 c-index-test -code-completion-at=%s:11:1 -I %S/Inputs -include %t %s 2> %t.stderr.txt | FileCheck -check-prefix CHECK-CC %s
>> // CHECK-CC: FunctionDecl:{ResultType int}{TypedText bar}{LeftParen (}{Placeholder int i}{RightParen )} (50)
>> // CHECK-CC: FunctionDecl:{ResultType void}{TypedText f}{LeftParen (}{Placeholder int x}{RightParen )} (50)
>> // CHECK-CC: FunctionDecl:{ResultType int}{TypedText foo}{LeftParen (}{Placeholder int}{RightParen )} (50)
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
More information about the cfe-commits
mailing list