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()); } diff --git a/compilerplugins/clang/rtlconstasciimacro.cxx b/compilerplugins/clang/rtlconstasciimacro.cxx index 331401afbc9c..d3843149b2ea 100644 --- a/compilerplugins/clang/rtlconstasciimacro.cxx +++ b/compilerplugins/clang/rtlconstasciimacro.cxx @@ -33,7 +33,12 @@ class RtlConstAsciiMacro bool VisitCXXConstructExpr( CXXConstructExpr* expr ); bool VisitCXXTemporaryObjectExpr( CXXTemporaryObjectExpr* expr ); bool VisitStringLiteral( const StringLiteral* literal ); +#if __clang_major__ < 3 || __clang_major__ == 3 && __clang_minor__ < 3 virtual void MacroExpands( const Token& macro, const MacroInfo* info, SourceRange range ) override; +#else + virtual void MacroExpands( const Token& macro, const MacroDirective* directive, + SourceRange range, const MacroArgs* args ) override; +#endif private: map< SourceLocation, SourceLocation > expansions; // start location -> end location bool searchingForString; @@ -53,7 +58,12 @@ void RtlConstAsciiMacro::run() } +#if __clang_major__ < 3 || __clang_major__ == 3 && __clang_minor__ < 3 void RtlConstAsciiMacro::MacroExpands( const Token& macro, const MacroInfo*, SourceRange range ) +#else +void RtlConstAsciiMacro::MacroExpands( const Token& macro, const MacroDirective*, + SourceRange range, const MacroArgs* ) +#endif { if( macro.getIdentifierInfo()->getName() != "RTL_CONSTASCII_USTRINGPARAM" ) return;