r198747 - Add tests for clang plugins

Alp Toker alp at nuanti.com
Wed Jan 8 16:54:53 PST 2014


Figured it out. r198820 (Add a test for Static Analyzer checker plugins)

Alp.

On 08/01/2014 19:01, Alp Toker wrote:
> Hi Jordan,
>
> It should be possible to add a test for analyzer plugins using 
> SampleAnalyzerPlugin now.
>
> Can you suggest an invocation that loads and verifies that it works?
>
> This should be testable now using the facilities I've checked in 
> (assuming there's something in tree that knows how to load it).
>
> Alp.
>
>
> On 08/01/2014 11:38, Alp Toker wrote:
>> Author: alp
>> Date: Wed Jan  8 05:38:47 2014
>> New Revision: 198747
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=198747&view=rev
>> Log:
>> Add tests for clang plugins
>>
>> Somehow the entire plugin infrastructure went wholly untested until now.
>>
>> The only plugins available for use in testing are the examples, so 
>> plugin tests
>> will only be run if CLANG_BUILD_EXAMPLES is enabled in the build.
>>
>> (The examples should really be enabled by default, not just to aid 
>> testing but
>> also to prevent bitrot in some key user-facing code. I'll propose that
>> shortly.)
>>
>> Requires supporting changes in LLVM r198746.
>>
>> Added:
>>      cfe/trunk/test/Frontend/plugins.c
>> Modified:
>>      cfe/trunk/CMakeLists.txt
>>      cfe/trunk/test/lit.cfg
>>      cfe/trunk/test/lit.site.cfg.in
>>
>> Modified: cfe/trunk/CMakeLists.txt
>> URL: 
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/CMakeLists.txt?rev=198747&r1=198746&r2=198747&view=diff
>> ============================================================================== 
>>
>> --- cfe/trunk/CMakeLists.txt (original)
>> +++ cfe/trunk/CMakeLists.txt Wed Jan  8 05:38:47 2014
>> @@ -319,6 +319,10 @@ macro(add_clang_library name)
>>       add_llvm_symbol_exports( ${name} ${LLVM_EXPORTED_SYMBOL_FILE} )
>>     endif()
>>   +  if (MODULE)
>> +    set_property(TARGET ${name} PROPERTY SUFFIX ${LLVM_PLUGIN_EXT})
>> +  endif ()
>> +
>>     if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ${name} STREQUAL "libclang")
>>       install(TARGETS ${name}
>>         LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
>>
>> Added: cfe/trunk/test/Frontend/plugins.c
>> URL: 
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Frontend/plugins.c?rev=198747&view=auto
>> ============================================================================== 
>>
>> --- cfe/trunk/test/Frontend/plugins.c (added)
>> +++ cfe/trunk/test/Frontend/plugins.c Wed Jan  8 05:38:47 2014
>> @@ -0,0 +1,5 @@
>> +// RUN: %clang_cc1 -load %llvmshlibdir/PrintFunctionNames%pluginext 
>> -plugin print-fns %s 2>&1 | FileCheck %s
>> +// REQUIRES: plugins, examples
>> +
>> +// CHECK: top-level-decl: "x"
>> +void x();
>>
>> Modified: cfe/trunk/test/lit.cfg
>> URL: 
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/lit.cfg?rev=198747&r1=198746&r2=198747&view=diff
>> ============================================================================== 
>>
>> --- cfe/trunk/test/lit.cfg (original)
>> +++ cfe/trunk/test/lit.cfg Wed Jan  8 05:38:47 2014
>> @@ -195,6 +195,22 @@ config.clang = inferClang(config.environ
>>   if not lit_config.quiet:
>>       lit_config.note('using clang: %r' % config.clang)
>>   +# Plugins (loadable modules)
>> +# TODO: This should be supplied by Makefile or autoconf.
>> +if sys.platform in ['win32', 'cygwin']:
>> +    has_plugins = (config.enable_shared == 1)
>> +else:
>> +    has_plugins = True
>> +
>> +if has_plugins and config.llvm_plugin_ext:
>> +    config.available_features.add('plugins')
>> +
>> +config.substitutions.append( ('%llvmshlibdir', config.llvm_shlib_dir) )
>> +config.substitutions.append( ('%pluginext', config.llvm_plugin_ext) )
>> +
>> +if config.clang_examples:
>> +    config.available_features.add('examples')
>> +
>>   # Note that when substituting %clang_cc1 also fill in the include 
>> directory of
>>   # the builtin headers. Those are part of even a freestanding 
>> environment, but
>>   # Clang relies on the driver to locate them.
>>
>> Modified: cfe/trunk/test/lit.site.cfg.in
>> URL: 
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/lit.site.cfg.in?rev=198747&r1=198746&r2=198747&view=diff
>> ============================================================================== 
>>
>> --- cfe/trunk/test/lit.site.cfg.in (original)
>> +++ cfe/trunk/test/lit.site.cfg.in Wed Jan  8 05:38:47 2014
>> @@ -6,6 +6,8 @@ config.llvm_src_root = "@LLVM_SOURCE_DIR
>>   config.llvm_obj_root = "@LLVM_BINARY_DIR@"
>>   config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
>>   config.llvm_libs_dir = "@LLVM_LIBS_DIR@"
>> +config.llvm_shlib_dir = "@SHLIBDIR@"
>> +config.llvm_plugin_ext = "@LLVM_PLUGIN_EXT@"
>>   config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
>>   config.clang_obj_root = "@CLANG_BINARY_DIR@"
>>   config.clang_tools_dir = "@CLANG_TOOLS_DIR@"
>> @@ -14,6 +16,7 @@ config.llvm_use_sanitizer = "@LLVM_USE_S
>>   config.clang_arcmt = @ENABLE_CLANG_ARCMT@
>>   config.clang_staticanalyzer = @ENABLE_CLANG_STATIC_ANALYZER@
>>   config.clang_rewriter = @ENABLE_CLANG_REWRITER@
>> +config.clang_examples = @CLANG_BUILD_EXAMPLES@
>>   config.host_arch = "@HOST_ARCH@"
>>     # Support substitution of the tools and libs dirs with user 
>> parameters. This is
>> @@ -21,6 +24,7 @@ config.host_arch = "@HOST_ARCH@"
>>   try:
>>       config.clang_tools_dir = config.clang_tools_dir % 
>> lit_config.params
>>       config.llvm_tools_dir = config.llvm_tools_dir % lit_config.params
>> +    config.llvm_shlib_dir = config.llvm_shlib_dir % lit_config.params
>>       config.llvm_libs_dir = config.llvm_libs_dir % lit_config.params
>>   except KeyError:
>>       e = sys.exc_info()[1]
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>

-- 
http://www.nuanti.com
the browser experts




More information about the cfe-commits mailing list