[polly] r279734 - Introduce unittests.

Michael Kruse via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 25 06:53:42 PDT 2016


Thanks for the not. It seems that libtinfo is not available on that
buildslave. Do you know whether LLVM's unit tests work on that
machine? If yes, I need to find out how LLVM handles this.

Michael

2016-08-25 15:24 GMT+02:00 Tobias Grosser <tobias at grosser.es>:
> This seems to have triggered a problem due to missing libraries:
>
> http://lab.llvm.org:8011/builders/perf-x86_64-penryn-O3-polly-parallel-fast/builds/23099
>
> Best,
> Tobias
>
> On Thu, Aug 25, 2016, at 02:36 PM, Michael Kruse via llvm-commits wrote:
>> Author: meinersbur
>> Date: Thu Aug 25 07:36:15 2016
>> New Revision: 279734
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=279734&view=rev
>> Log:
>> Introduce unittests.
>>
>> Add the infrastructure for unittests to Polly and two simple tests for
>> conversion between isl_val and APInt. In addition, a build target
>> check-polly-unittests is added to run only the unittests but not the
>> regression
>> tests.
>>
>> Clang's unittest mechanism served as as a blueprint which then was
>> adapted to
>> Polly.
>>
>> Differential Revision: https://reviews.llvm.org/D23833
>>
>> Added:
>>     polly/trunk/test/Unit/
>>     polly/trunk/test/Unit/lit.cfg
>>     polly/trunk/test/Unit/lit.site.cfg.in
>>     polly/trunk/unittests/
>>     polly/trunk/unittests/CMakeLists.txt
>>     polly/trunk/unittests/Isl/
>>     polly/trunk/unittests/Isl/CMakeLists.txt
>>     polly/trunk/unittests/Isl/IslTest.cpp
>> Modified:
>>     polly/trunk/CMakeLists.txt
>>     polly/trunk/test/CMakeLists.txt
>>
>> Modified: polly/trunk/CMakeLists.txt
>> URL:
>> http://llvm.org/viewvc/llvm-project/polly/trunk/CMakeLists.txt?rev=279734&r1=279733&r2=279734&view=diff
>> ==============================================================================
>> --- polly/trunk/CMakeLists.txt (original)
>> +++ polly/trunk/CMakeLists.txt Thu Aug 25 07:36:15 2016
>> @@ -88,9 +88,33 @@ if (NOT DEFINED LLVM_MAIN_SRC_DIR)
>>      endif()
>>    endif()
>>
>> +  # Sources available, too?
>> +  execute_process(COMMAND "${LLVM_INSTALL_ROOT}/bin/llvm-config"
>> --src-root
>> +                  OUTPUT_VARIABLE MAIN_SRC_DIR
>> +                  OUTPUT_STRIP_TRAILING_WHITESPACE)
>> +  set(LLVM_SOURCE_ROOT ${MAIN_SRC_DIR} CACHE PATH "Path to LLVM source
>> tree")
>> +
>> +  # Enable unit tests if available.
>> +  set(UNITTEST_DIR ${LLVM_SOURCE_ROOT}/utils/unittest)
>> +  if(EXISTS ${UNITTEST_DIR}/googletest/include/gtest/gtest.h)
>> +    add_library(gtest ${UNITTEST_DIR}/googletest/src/gtest-all.cc)
>> +    target_include_directories(gtest PUBLIC
>> "${UNITTEST_DIR}/googletest/include" PRIVATE
>> "${UNITTEST_DIR}/googletest")
>> +    if( NOT MSVC )
>> +      target_link_libraries(gtest pthread tinfo dl)
>> +    endif ()
>> +
>> +    add_library(gtest_main ${UNITTEST_DIR}/UnitTestMain/TestMain.cpp)
>> +    target_link_libraries(gtest_main gtest)
>> +
>> +    set(POLLY_GTEST_AVAIL 1)
>> +  endif()
>> +
>>    # Make sure the isl c files are built as fPIC
>>    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
>> -endif(NOT DEFINED LLVM_MAIN_SRC_DIR)
>> +else ()
>> +  set(LLVM_SOURCE_ROOT "${LLVM_MAIN_SRC_DIR}")
>> +  set(POLLY_GTEST_AVAIL 1)
>> +endif ()
>>
>>  set(POLLY_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
>>  set(POLLY_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
>> @@ -169,6 +193,9 @@ add_definitions( -D_GNU_SOURCE )
>>  add_subdirectory(docs)
>>  add_subdirectory(lib)
>>  add_subdirectory(test)
>> +if (POLLY_GTEST_AVAIL)
>> +  add_subdirectory(unittests)
>> +endif ()
>>  add_subdirectory(tools)
>>  # TODO: docs.
>>
>> @@ -177,7 +204,7 @@ configure_file( ${CMAKE_CURRENT_SOURCE_D
>>                  ${POLLY_BINARY_DIR}/include/polly/Config/config.h )
>>
>>  # Add target to check formatting of polly files
>> -file( GLOB_RECURSE files *.h lib/*.cpp lib/*.c tools/*.cpp tools/*.c
>> tools/*.h)
>> +file( GLOB_RECURSE files *.h lib/*.cpp lib/*.c tools/*.cpp tools/*.c
>> tools/*.h unittests/*.cpp)
>>  file( GLOB_RECURSE jsonfiles lib/JSON/*.h lib/JSON/*.cpp)
>>  file( GLOB_RECURSE external lib/External/*.h lib/External/*.c)
>>  list( REMOVE_ITEM files ${jsonfiles} ${external})
>>
>> Modified: polly/trunk/test/CMakeLists.txt
>> URL:
>> http://llvm.org/viewvc/llvm-project/polly/trunk/test/CMakeLists.txt?rev=279734&r1=279733&r2=279734&view=diff
>> ==============================================================================
>> --- polly/trunk/test/CMakeLists.txt (original)
>> +++ polly/trunk/test/CMakeLists.txt Thu Aug 25 07:36:15 2016
>> @@ -18,6 +18,9 @@ if (NOT DEFINED LLVM_MAIN_SRC_DIR)
>>    # FIXME: FileCheck is not available in llvm install directory at the
>>    moment.
>>    set(LLVM_LIT ${LLVM_INSTALL_ROOT}/bin/llvm-lit)
>>    set(POLLY_TEST_DEPS LLVMPolly)
>> +  if (POLLY_GTEST_AVAIL)
>> +    list(APPEND POLLY_TEST_DEPS PollyUnitTests)
>> +  endif ()
>>
>>    set(LLVM_BINARY_DIR "${LLVM_INSTALL_ROOT}")
>>    set(LLVM_TOOLS_DIR "${LLVM_INSTALL_ROOT}/bin")
>> @@ -67,18 +70,38 @@ if (NOT DEFINED LLVM_MAIN_SRC_DIR)
>>      add_custom_target(check-polly
>>        COMMAND ${LLVM_LIT}
>>                    --param
>>                    polly_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
>> +                  --param
>> polly_unit_site_config=${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
>>                    --param build_config=${CMAKE_CFG_INTDIR}
>>                    -sv ${POLLY_TEST_EXTRA_ARGS}
>>                    ${CMAKE_CURRENT_BINARY_DIR}
>>                    DEPENDS ${POLLY_TEST_DEPS}
>> -                  COMMENT "Running Polly regression tests")
>> +                  COMMENT "Running Polly regression/unit tests")
>>      set_target_properties(check-polly PROPERTIES FOLDER "Polly")
>> +
>> +    if (POLLY_GTEST_AVAIL)
>> +      configure_file(
>> +        ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in
>> +        ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg)
>> +
>> +      add_custom_target(check-polly-unittests
>> +        COMMAND ${LLVM_LIT}
>> +                  --param
>> polly_site_config=${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
>> +                  --param build_config=${CMAKE_CFG_INTDIR}
>> +                  -sv ${POLLY_TEST_EXTRA_ARGS}
>> +                  ${CMAKE_CURRENT_BINARY_DIR}/Unit
>> +                  DEPENDS PollyUnitTests
>> +                  COMMENT "Running Polly unit tests")
>> +      set_target_properties(check-polly-unittests PROPERTIES FOLDER
>> "Polly")
>> +    endif ()
>>    endif()
>>
>>  else (NOT DEFINED LLVM_MAIN_SRC_DIR)
>>
>>    set(LLVM_LIT ${LLVM_TOOLS_BINARY_DIR}/llvm-lit)
>>    set(POLLY_TEST_DEPS llvm-config opt LLVMPolly FileCheck not)
>> +  if (POLLY_GTEST_AVAIL)
>> +    list(APPEND POLLY_TEST_DEPS PollyUnitTests)
>> +  endif ()
>>
>>    set(LLVM_BINARY_DIR "${LLVM_BINARY_DIR}")
>>    set(LLVM_TOOLS_DIR "${LLVM_TOOLS_BINARY_DIR}")
>> @@ -89,14 +112,31 @@ else (NOT DEFINED LLVM_MAIN_SRC_DIR)
>>      ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
>>      ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg)
>>
>> +  # Run regression and unit tests
>>    add_lit_testsuite(check-polly "Running polly regression tests"
>>      ${CMAKE_CURRENT_BINARY_DIR}
>>      PARAMS polly_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
>> +
>> polly_unit_site_config=${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
>>      DEPENDS ${POLLY_TEST_DEPS}
>>      )
>>
>>    set_target_properties(check-polly PROPERTIES FOLDER "Polly")
>>
>> +  if (POLLY_GTEST_AVAIL)
>> +    configure_lit_site_cfg(
>> +      ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in
>> +      ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
>> +    )
>> +
>> +    # Run only unit tests
>> +    add_lit_testsuite(check-polly-unittests "Running polly unit tests
>> only"
>> +      ${CMAKE_CURRENT_BINARY_DIR}/Unit
>> +      PARAMS
>> polly_site_config=${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
>> +      DEPENDS PollyUnitTests
>> +      )
>> +    set_target_properties(check-polly-unittests PROPERTIES FOLDER
>> "Polly")
>> +  endif ()
>> +
>>    # Run polly-check-format as part of polly-check only if we are
>>    compiling with
>>    # clang, so clang-format is availbale.
>>    # if (TARGET clang-format) would be preferable, but this target is
>>    only added
>>
>> Added: polly/trunk/test/Unit/lit.cfg
>> URL:
>> http://llvm.org/viewvc/llvm-project/polly/trunk/test/Unit/lit.cfg?rev=279734&view=auto
>> ==============================================================================
>> --- polly/trunk/test/Unit/lit.cfg (added)
>> +++ polly/trunk/test/Unit/lit.cfg Thu Aug 25 07:36:15 2016
>> @@ -0,0 +1,108 @@
>> +# -*- Python -*-
>> +
>> +# Configuration file for the 'lit' test runner.
>> +
>> +import os
>> +import platform
>> +
>> +import lit.formats
>> +import lit.util
>> +
>> +# name: The name of this test suite.
>> +config.name = 'Polly-Unit'
>> +
>> +# suffixes: A list of file extensions to treat as test files.
>> +config.suffixes = []
>> +
>> +# test_source_root: The root path where tests are located.
>> +# test_exec_root: The root path where tests should be run.
>> +polly_obj_root = getattr(config, 'polly_obj_root', None)
>> +if polly_obj_root is not None:
>> +    config.test_exec_root = os.path.join(polly_obj_root, 'unittests')
>> +    config.test_source_root = config.test_exec_root
>> +
>> +# testFormat: The test format to use to interpret tests.
>> +llvm_build_mode = getattr(config, 'llvm_build_mode', "Debug")
>> +config.test_format = lit.formats.GoogleTest(llvm_build_mode, 'Tests')
>> +
>> +# Propagate the temp directory. Windows requires this because it uses
>> \Windows\
>> +# if none of these are present.
>> +if 'TMP' in os.environ:
>> +    config.environment['TMP'] = os.environ['TMP']
>> +if 'TEMP' in os.environ:
>> +    config.environment['TEMP'] = os.environ['TEMP']
>> +
>> +# Propagate path to symbolizer for ASan/MSan.
>> +for symbolizer in ['ASAN_SYMBOLIZER_PATH', 'MSAN_SYMBOLIZER_PATH']:
>> +    if symbolizer in os.environ:
>> +        config.environment[symbolizer] = os.environ[symbolizer]
>> +
>> +###
>> +
>> +# Check that the object root is known.
>> +if config.test_exec_root is None:
>> +    # Otherwise, we haven't loaded the site specific configuration (the
>> user is
>> +    # probably trying to run on a test file directly, and either the
>> site
>> +    # configuration hasn't been created by the build system, or we are
>> in an
>> +    # out-of-tree build situation).
>> +
>> +    # Check for 'polly_unit_site_config' user parameter, and use that if
>> available.
>> +    site_cfg = lit_config.params.get('polly_unit_site_config', None)
>> +    if site_cfg and os.path.exists(site_cfg):
>> +        lit_config.load_config(config, site_cfg)
>> +        raise SystemExit
>> +
>> +    # Try to detect the situation where we are using an out-of-tree
>> build by
>> +    # looking for 'llvm-config'.
>> +    #
>> +    # FIXME: I debated (i.e., wrote and threw away) adding logic to
>> +    # automagically generate the lit.site.cfg if we are in some kind of
>> fresh
>> +    # build situation. This means knowing how to invoke the build system
>> +    # though, and I decided it was too much magic.
>> +
>> +    llvm_config = lit.util.which('llvm-config',
>> config.environment['PATH'])
>> +    if not llvm_config:
>> +        lit_config.fatal('No site specific configuration available!')
>> +
>> +    # Get the source and object roots.
>> +    llvm_src_root = lit.util.capture(['llvm-config',
>> '--src-root']).strip()
>> +    llvm_obj_root = lit.util.capture(['llvm-config',
>> '--obj-root']).strip()
>> +    polly_src_root = os.path.join(llvm_src_root, "tools", "polly")
>> +    polly_obj_root = os.path.join(llvm_obj_root, "tools", "polly")
>> +
>> +    # Validate that we got a tree which points to here, using the
>> standard
>> +    # tools/clang layout.
>> +    this_src_root = os.path.join(os.path.dirname(__file__),'..','..')
>> +    if os.path.realpath(polly_src_root) !=
>> os.path.realpath(this_src_root):
>> +        lit_config.fatal('No site specific configuration available!')
>> +
>> +    # Check that the site specific configuration exists.
>> +    site_cfg = os.path.join(polly_obj_root, 'test', 'Unit',
>> 'lit.site.cfg')
>> +    if not os.path.exists(site_cfg):
>> +        lit_config.fatal('No site specific configuration available!')
>> +
>> +    # Okay, that worked. Notify the user of the automagic, and
>> reconfigure.
>> +    lit_config.note('using out-of-tree build at %r' % polly_obj_root)
>> +    lit_config.load_config(config, site_cfg)
>> +    raise SystemExit
>> +
>> +shlibpath_var = ''
>> +if platform.system() == 'Linux':
>> +    shlibpath_var = 'LD_LIBRARY_PATH'
>> +elif platform.system() == 'Darwin':
>> +    shlibpath_var = 'DYLD_LIBRARY_PATH'
>> +elif platform.system() == 'Windows':
>> +    shlibpath_var = 'PATH'
>> +
>> +# Point the dynamic loader at dynamic libraries in 'lib'.
>> +llvm_libs_dir = getattr(config, 'llvm_libs_dir', None)
>> +if not llvm_libs_dir:
>> +    lit_config.fatal('No LLVM libs dir set!')
>> +shlibpath = os.path.pathsep.join((llvm_libs_dir,
>> +
>> config.environment.get(shlibpath_var,'')))
>> +
>> +# Win32 seeks DLLs along %PATH%.
>> +if sys.platform in ['win32', 'cygwin'] and
>> os.path.isdir(config.shlibdir):
>> +    shlibpath = os.path.pathsep.join((config.shlibdir, shlibpath))
>> +
>> +config.environment[shlibpath_var] = shlibpath
>>
>> Added: polly/trunk/test/Unit/lit.site.cfg.in
>> URL:
>> http://llvm.org/viewvc/llvm-project/polly/trunk/test/Unit/lit.site.cfg.in?rev=279734&view=auto
>> ==============================================================================
>> --- polly/trunk/test/Unit/lit.site.cfg.in (added)
>> +++ polly/trunk/test/Unit/lit.site.cfg.in Thu Aug 25 07:36:15 2016
>> @@ -0,0 +1,31 @@
>> + at LIT_SITE_CFG_IN_HEADER@
>> +
>> +import sys
>> +
>> +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_build_mode = "@LLVM_BUILD_MODE@"
>> +config.polly_obj_root = "@POLLY_BINARY_DIR@"
>> +config.polly_lib_dir = "@POLLY_LIB_DIR@"
>> +config.enable_shared = @ENABLE_SHARED@
>> +config.shlibdir = "@SHLIBDIR@"
>> +config.target_triple = "@TARGET_TRIPLE@"
>> +config.enable_gpgpu_codegen = "@GPU_CODEGEN@"
>> +config.link_polly_into_tools = "@LINK_POLLY_INTO_TOOLS@"
>> +
>> +# Support substitution of the tools_dir, libs_dirs, and build_mode with
>> user
>> +# parameters. This is used when we can't determine the tool dir at
>> +# configuration time.
>> +try:
>> +    config.llvm_tools_dir = config.llvm_tools_dir % lit_config.params
>> +    config.llvm_libs_dir = config.llvm_libs_dir % lit_config.params
>> +    config.llvm_build_mode = config.llvm_build_mode % lit_config.params
>> +except KeyError:
>> +    e = sys.exc_info()[1]
>> +    key, = e.args
>> +    lit_config.fatal("unable to find %r parameter, use
>> '--param=%s=VALUE'" % (key,key))
>> +
>> +# Let the main config do the real work.
>> +lit_config.load_config(config, "@POLLY_SOURCE_DIR@/test/Unit/lit.cfg")
>>
>> Added: polly/trunk/unittests/CMakeLists.txt
>> URL:
>> http://llvm.org/viewvc/llvm-project/polly/trunk/unittests/CMakeLists.txt?rev=279734&view=auto
>> ==============================================================================
>> --- polly/trunk/unittests/CMakeLists.txt (added)
>> +++ polly/trunk/unittests/CMakeLists.txt Thu Aug 25 07:36:15 2016
>> @@ -0,0 +1,22 @@
>> +add_custom_target(PollyUnitTests)
>> +set_target_properties(PollyUnitTests PROPERTIES FOLDER "Polly")
>> +
>> +# add_polly_unittest(test_dirname file1.cpp file2.cpp)
>> +#
>> +# Will compile the list of files together and link against Polly and its
>> dependences.
>> +function(add_polly_unittest test_name)
>> +  if(COMMAND add_unittest)
>> +    add_unittest(PollyUnitTests ${test_name} ${ARGN})
>> +  else()
>> +    add_executable(${test_name} ${ARGN})
>> +    set_target_properties(${test_name} PROPERTIES
>> RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
>> +
>> +    target_link_libraries(${test_name} gtest_main gtest)
>> +    add_dependencies(PollyUnitTests ${test_name})
>> +
>> +    set_property(TARGET ${test_name} PROPERTY FOLDER "Polly")
>> +  endif()
>> +  target_link_libraries(${test_name} Polly LLVMCore LLVMSupport)
>> +endfunction()
>> +
>> +add_subdirectory(Isl)
>>
>> Added: polly/trunk/unittests/Isl/CMakeLists.txt
>> URL:
>> http://llvm.org/viewvc/llvm-project/polly/trunk/unittests/Isl/CMakeLists.txt?rev=279734&view=auto
>> ==============================================================================
>> --- polly/trunk/unittests/Isl/CMakeLists.txt (added)
>> +++ polly/trunk/unittests/Isl/CMakeLists.txt Thu Aug 25 07:36:15 2016
>> @@ -0,0 +1,3 @@
>> +add_polly_unittest(IslTests
>> +  IslTest.cpp
>> +  )
>>
>> Added: polly/trunk/unittests/Isl/IslTest.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/polly/trunk/unittests/Isl/IslTest.cpp?rev=279734&view=auto
>> ==============================================================================
>> --- polly/trunk/unittests/Isl/IslTest.cpp (added)
>> +++ polly/trunk/unittests/Isl/IslTest.cpp Thu Aug 25 07:36:15 2016
>> @@ -0,0 +1,101 @@
>> +//===- IslTest.cpp
>> ----------------------------------------------------===//
>> +//
>> +//                     The LLVM Compiler Infrastructure
>> +//
>> +// This file is distributed under the University of Illinois Open Source
>> +// License. See LICENSE.TXT for details.
>> +//
>> +//===----------------------------------------------------------------------===//
>> +
>> +#include "polly/Support/GICHelper.h"
>> +#include "gtest/gtest.h"
>> +#include "isl/val.h"
>> +
>> +using namespace llvm;
>> +using namespace polly;
>> +
>> +namespace {
>> +
>> +TEST(Isl, APIntToIslVal) {
>> +  isl_ctx *IslCtx = isl_ctx_alloc();
>> +
>> +  {
>> +    APInt APNOne(32, -1, true);
>> +    auto *IslNOne = isl_valFromAPInt(IslCtx, APNOne, true);
>> +    EXPECT_EQ(isl_bool_true, isl_val_is_negone(IslNOne));
>> +    isl_val_free(IslNOne);
>> +  }
>> +
>> +  {
>> +    APInt APZero(32, 0, false);
>> +    auto *IslZero = isl_valFromAPInt(IslCtx, APZero, false);
>> +    EXPECT_EQ(isl_val_is_zero(IslZero), isl_bool_true);
>> +    isl_val_free(IslZero);
>> +  }
>> +
>> +  {
>> +    APInt APOne(32, 1, false);
>> +    auto *IslOne = isl_valFromAPInt(IslCtx, APOne, false);
>> +    EXPECT_EQ(isl_val_is_one(IslOne), isl_bool_true);
>> +    isl_val_free(IslOne);
>> +  }
>> +
>> +  {
>> +    APInt APTwo(32, 2, false);
>> +    auto *IslTwo = isl_valFromAPInt(IslCtx, APTwo, false);
>> +    EXPECT_EQ(isl_val_cmp_si(IslTwo, 2), 0);
>> +    isl_val_free(IslTwo);
>> +  }
>> +
>> +  {
>> +    APInt APNOne(32, (1ull << 32) - 1, false);
>> +    auto *IslNOne = isl_valFromAPInt(IslCtx, APNOne, false);
>> +    auto *IslRef = isl_val_int_from_ui(IslCtx, (1ull << 32) - 1);
>> +    EXPECT_EQ(isl_val_eq(IslNOne, IslRef), isl_bool_true);
>> +    isl_val_free(IslNOne);
>> +    isl_val_free(IslRef);
>> +  }
>> +
>> +  isl_ctx_free(IslCtx);
>> +}
>> +
>> +TEST(Isl, IslValToAPInt) {
>> +  isl_ctx *IslCtx = isl_ctx_alloc();
>> +
>> +  {
>> +    auto *IslNOne = isl_val_int_from_si(IslCtx, -1);
>> +    auto APNOne = APIntFromVal(IslNOne);
>> +    // APInt has no sign bit, so never equals to a negative number.
>> +    // FIXME: The canonical representation of a negative APInt is two's
>> +    // complement.
>> +    EXPECT_EQ(APNOne, 1);
>> +  }
>> +
>> +  {
>> +    auto *IslZero = isl_val_int_from_ui(IslCtx, 0);
>> +    auto APZero = APIntFromVal(IslZero);
>> +    EXPECT_EQ(APZero, 0);
>> +  }
>> +
>> +  {
>> +    auto *IslOne = isl_val_int_from_ui(IslCtx, 1);
>> +    auto APOne = APIntFromVal(IslOne);
>> +    EXPECT_EQ(APOne, 1);
>> +  }
>> +
>> +  {
>> +    auto *IslTwo = isl_val_int_from_ui(IslCtx, 2);
>> +    auto APTwo = APIntFromVal(IslTwo);
>> +    EXPECT_EQ(APTwo, 2);
>> +  }
>> +
>> +  {
>> +    auto *IslNOne = isl_val_int_from_ui(IslCtx, (1ull << 32) - 1);
>> +    auto APNOne = APIntFromVal(IslNOne);
>> +    EXPECT_EQ(APNOne, (1ull << 32) - 1);
>> +  }
>> +
>> +  isl_ctx_free(IslCtx);
>> +}
>> +
>> +} // anonymous namespace
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list