[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