[PATCH] D141188: [MergeICmps] Adapt to non-eq comparisons

Bogdan Graur via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 1 08:11:37 PST 2023


bgraur added a comment.

@Allen test `unittests/ProfileData/ProfileDataTests` fails when built with optimisations level `-O1` with `clang` including this patch.

When building the test with `-O3` (Release) or `-O1 -g` it passes.

Not sure if this patch triggers some other bug in clang or the test has UB or the patch itself is to blame.
Please revert this patch and investigate the issue without any pressure.

Repro steps:

1. Build and install `clang` somewhere.
2. Build the test with `ninja ProfileDataTests -v`. The compilation command and linker command will be displayed.
3. Edit the commands to specify `-O1` and no `-g`. It is enough to only build the test in `unittests/ProfileData/CoverageMappingTest.cpp` as that one shows the failure.

The command will look something like this:

  ${INSTALL_PATH}/bin/clang++ \
    -DGTEST_HAS_RTTI=0 -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D_LIBCPP_ENABLE_ASSERTIONS \
    -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS \
    -I${PROJECT}/llvm-project/build/unittests/ProfileData \
    -I${PROJECT}/llvm-project/llvm/unittests/ProfileData \
    -I${PROJECT}/llvm-project/build/include \
    -I${PROJECT}/llvm-project/llvm/include \
    -I${PROJECT}/llvm-project/third-party/unittest/googletest/include \
    -I${PROJECT}/llvm-project/third-party/unittest/googlemock/include \
    -O1 -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new \
    -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long \
    -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor \
    -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported \
    -fdiagnostics-color -Wno-variadic-macros -Wno-gnu-zero-variadic-macro-arguments -fno-exceptions -fno-rtti \
    -Wno-suggest-override -std=c++17 \
    -MD -MT unittests/ProfileData/CMakeFiles/ProfileDataTests.dir/CoverageMappingTest.cpp.o \
    -MF unittests/ProfileData/CMakeFiles/ProfileDataTests.dir/CoverageMappingTest.cpp.o.d \
    -o unittests/ProfileData/CMakeFiles/ProfileDataTests.dir/CoverageMappingTest.cpp.o \
    -c ${PROJECT}/llvm-project/llvm/unittests/ProfileData/CoverageMappingTest.cpp
  
  ${INSTALL_PATH}/bin/clang++ -O1 -fPIC -fno-semantic-interposition \
    -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter \
    -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi \
    -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor \
    -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color \
    unittests/ProfileData/CMakeFiles/ProfileDataTests.dir/CoverageMappingTest.cpp.o \
    -o unittests/ProfileData/ProfileDataTests  \
    lib/libLLVMCore.a  lib/libLLVMCoverage.a  lib/libLLVMProfileData.a  lib/libLLVMSupport.a  lib/libLLVMObject.a  \
    lib/libLLVMSupport.a  lib/libllvm_gtest_main.a  lib/libllvm_gtest.a  lib/libLLVMTestingSupport.a  \
    lib/libLLVMSymbolize.a  lib/libLLVMDebugInfoPDB.a  lib/libLLVMDebugInfoMSF.a  lib/libLLVMDebugInfoDWARF.a  \
    lib/libLLVMObject.a  lib/libLLVMIRReader.a  lib/libLLVMBitReader.a  lib/libLLVMAsmParser.a  lib/libLLVMCore.a  \
    lib/libLLVMRemarks.a  lib/libLLVMBitstreamReader.a  lib/libLLVMMCParser.a  lib/libLLVMMC.a  lib/libLLVMDebugInfoCodeView.a  \
    lib/libLLVMTextAPI.a  lib/libLLVMBinaryFormat.a  lib/libLLVMTargetParser.a  lib/libllvm_gtest.a  lib/libLLVMSupport.a  \
    lib/libLLVMDemangle.a  -lrt  -ldl  -lm  /usr/lib/x86_64-linux-gnu/libz.so  /usr/lib/x86_64-linux-gnu/libtinfo.so  -lpthread 
  
  $ unittests/ProfileData/ProfileDataTests
  ..........................
  [==========] 118 tests from 2 test suites ran. (4 ms total)
  [  PASSED  ] 114 tests.
  [  FAILED  ] 4 tests, listed below:
  [  FAILED  ] ParameterizedCovMapTest/CoverageMappingTest.test_line_coverage_iterator/0, where GetParam() = (false, false)
  [  FAILED  ] ParameterizedCovMapTest/CoverageMappingTest.test_line_coverage_iterator/1, where GetParam() = (false, true)
  [  FAILED  ] ParameterizedCovMapTest/CoverageMappingTest.test_line_coverage_iterator/2, where GetParam() = (true, false)
  [  FAILED  ] ParameterizedCovMapTest/CoverageMappingTest.test_line_coverage_iterator/3, where GetParam() = (true, true)




Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D141188/new/

https://reviews.llvm.org/D141188



More information about the llvm-commits mailing list