diff options
Diffstat (limited to 'compilerplugins/clang/checkconfigmacros.cxx')
-rw-r--r-- | compilerplugins/clang/checkconfigmacros.cxx | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/compilerplugins/clang/checkconfigmacros.cxx b/compilerplugins/clang/checkconfigmacros.cxx index 3a220456ef25..8524d7b8edb6 100644 --- a/compilerplugins/clang/checkconfigmacros.cxx +++ b/compilerplugins/clang/checkconfigmacros.cxx @@ -32,11 +32,19 @@ class CheckConfigMacros public: explicit CheckConfigMacros( CompilerInstance& compiler ); virtual void run() override; +#if __clang_major__ < 3 || __clang_major__ == 3 && __clang_minor__ < 2 virtual void MacroDefined( const Token& macroToken, const MacroInfo* info ) override; - virtual void MacroUndefined( const Token& macroToken , const MacroInfo* info ) override; + virtual void MacroUndefined( const Token& macroToken, const MacroInfo* info ) override; virtual void Ifdef( SourceLocation location, const Token& macroToken ) override; virtual void Ifndef( SourceLocation location, const Token& macroToken ) override; virtual void Defined( const Token& macroToken ) override; +#else + virtual void MacroDefined( const Token& macroToken, const MacroDirective* info ) override; + virtual void MacroUndefined( const Token& macroToken, const MacroDirective* info ) override; + virtual void Ifdef( SourceLocation location, const Token& macroToken, const MacroDirective* info ) override; + virtual void Ifndef( SourceLocation location, const Token& macroToken, const MacroDirective* info ) override; + virtual void Defined( const Token& macroToken, const MacroDirective* info ) override; +#endif private: void checkMacro( const Token& macroToken, SourceLocation location ); std::set< string > configMacros; @@ -53,9 +61,16 @@ void CheckConfigMacros::run() // nothing, only check preprocessor usage } +#if __clang_major__ < 3 || __clang_major__ == 3 && __clang_minor__ < 2 void CheckConfigMacros::MacroDefined( const Token& macroToken, const MacroInfo* info ) { - const char* filename = compiler.getSourceManager().getPresumedLoc( info->getDefinitionLoc()).getFilename(); + SourceLocation location = info->getDefinitionLoc(); +#else +void CheckConfigMacros::MacroDefined( const Token& macroToken, const MacroDirective* info ) + { + SourceLocation location = info->getLocation(); +#endif + const char* filename = compiler.getSourceManager().getPresumedLoc( location ).getFilename(); if( filename != NULL && ( strncmp( filename, BUILDDIR "/config_host/", strlen( BUILDDIR "/config_host/" )) == 0 || strncmp( filename, BUILDDIR "/config_build/", strlen( BUILDDIR "/config_build/" )) == 0 )) @@ -65,22 +80,38 @@ void CheckConfigMacros::MacroDefined( const Token& macroToken, const MacroInfo* } } +#if __clang_major__ < 3 || __clang_major__ == 3 && __clang_minor__ < 2 void CheckConfigMacros::MacroUndefined( const Token& macroToken, const MacroInfo* ) +#else +void CheckConfigMacros::MacroUndefined( const Token& macroToken, const MacroDirective* ) +#endif { configMacros.erase( macroToken.getIdentifierInfo()->getName()); } +#if __clang_major__ < 3 || __clang_major__ == 3 && __clang_minor__ < 2 void CheckConfigMacros::Ifdef( SourceLocation location, const Token& macroToken ) +#else +void CheckConfigMacros::Ifdef( SourceLocation location, const Token& macroToken, const MacroDirective* ) +#endif { checkMacro( macroToken, location ); } +#if __clang_major__ < 3 || __clang_major__ == 3 && __clang_minor__ < 2 void CheckConfigMacros::Ifndef( SourceLocation location, const Token& macroToken ) +#else +void CheckConfigMacros::Ifndef( SourceLocation location, const Token& macroToken, const MacroDirective* ) +#endif { checkMacro( macroToken, location ); } +#if __clang_major__ < 3 || __clang_major__ == 3 && __clang_minor__ < 2 void CheckConfigMacros::Defined( const Token& macroToken ) +#else +void CheckConfigMacros::Defined( const Token& macroToken, const MacroDirective* ) +#endif { checkMacro( macroToken, macroToken.getLocation()); } |