csmith-project / creduce

C-Reduce, a C and C++ program reducer
Other
1.25k stars 123 forks source link

Compatibility with LLVM 18: backport fixes from cvise #271

Closed pramodk closed 9 months ago

pramodk commented 10 months ago
pramod@perfeng:~/repos/external/creduce/build/clang_delta$ /usr/bin/c++  -fno-rtti -fno-strict-aliasing -Wall -Wextra -Wno-long-long -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility-inlines-hidden -rdynamic CMakeFiles/clang_delta.dir/AggregateToScalar.cpp.o CMakeFiles/clang_delta.dir/BinOpSimplification.cpp.o CMakeFiles/clang_delta.dir/CallExprToValue.cpp.o CMakeFiles/clang_delta.dir/ClangDelta.cpp.o CMakeFiles/clang_delta.dir/ClassTemplateToClass.cpp.o CMakeFiles/clang_delta.dir/CombineGlobalVarDecl.cpp.o CMakeFiles/clang_delta.dir/CombineLocalVarDecl.cpp.o CMakeFiles/clang_delta.dir/CopyPropagation.cpp.o CMakeFiles/clang_delta.dir/EmptyStructToInt.cpp.o CMakeFiles/clang_delta.dir/ExpressionDetector.cpp.o CMakeFiles/clang_delta.dir/InstantiateTemplateParam.cpp.o CMakeFiles/clang_delta.dir/InstantiateTemplateTypeParamToInt.cpp.o CMakeFiles/clang_delta.dir/LiftAssignmentExpr.cpp.o CMakeFiles/clang_delta.dir/LocalToGlobal.cpp.o CMakeFiles/clang_delta.dir/MoveFunctionBody.cpp.o CMakeFiles/clang_delta.dir/MoveGlobalVar.cpp.o CMakeFiles/clang_delta.dir/ParamToGlobal.cpp.o CMakeFiles/clang_delta.dir/ParamToLocal.cpp.o CMakeFiles/clang_delta.dir/ReduceArrayDim.cpp.o CMakeFiles/clang_delta.dir/ReduceArraySize.cpp.o CMakeFiles/clang_delta.dir/ReduceClassTemplateParameter.cpp.o CMakeFiles/clang_delta.dir/ReducePointerLevel.cpp.o CMakeFiles/clang_delta.dir/ReducePointerPairs.cpp.o CMakeFiles/clang_delta.dir/RemoveAddrTaken.cpp.o CMakeFiles/clang_delta.dir/RemoveArray.cpp.o CMakeFiles/clang_delta.dir/RemoveBaseClass.cpp.o CMakeFiles/clang_delta.dir/RemoveCtorInitializer.cpp.o CMakeFiles/clang_delta.dir/RemoveEnumMemberValue.cpp.o CMakeFiles/clang_delta.dir/RemoveNamespace.cpp.o CMakeFiles/clang_delta.dir/RemoveNestedFunction.cpp.o CMakeFiles/clang_delta.dir/RemovePointer.cpp.o CMakeFiles/clang_delta.dir/RemoveTrivialBaseTemplate.cpp.o CMakeFiles/clang_delta.dir/RemoveUnresolvedBase.cpp.o CMakeFiles/clang_delta.dir/RemoveUnusedEnumMember.cpp.o CMakeFiles/clang_delta.dir/RemoveUnusedFunction.cpp.o CMakeFiles/clang_delta.dir/RemoveUnusedOuterClass.cpp.o CMakeFiles/clang_delta.dir/RemoveUnusedStructField.cpp.o CMakeFiles/clang_delta.dir/RemoveUnusedVar.cpp.o CMakeFiles/clang_delta.dir/RenameCXXMethod.cpp.o CMakeFiles/clang_delta.dir/RenameClass.cpp.o CMakeFiles/clang_delta.dir/RenameFun.cpp.o CMakeFiles/clang_delta.dir/RenameParam.cpp.o CMakeFiles/clang_delta.dir/RenameVar.cpp.o CMakeFiles/clang_delta.dir/ReplaceArrayAccessWithIndex.cpp.o CMakeFiles/clang_delta.dir/ReplaceArrayIndexVar.cpp.o CMakeFiles/clang_delta.dir/ReplaceCallExpr.cpp.o CMakeFiles/clang_delta.dir/ReplaceClassWithBaseTemplateSpec.cpp.o CMakeFiles/clang_delta.dir/ReplaceDependentName.cpp.o CMakeFiles/clang_delta.dir/ReplaceDependentTypedef.cpp.o CMakeFiles/clang_delta.dir/ReplaceDerivedClass.cpp.o CMakeFiles/clang_delta.dir/ReplaceFunctionDefWithDecl.cpp.o CMakeFiles/clang_delta.dir/ReplaceOneLevelTypedefType.cpp.o CMakeFiles/clang_delta.dir/ReplaceSimpleTypedef.cpp.o CMakeFiles/clang_delta.dir/ReplaceUndefinedFunction.cpp.o CMakeFiles/clang_delta.dir/ReturnVoid.cpp.o CMakeFiles/clang_delta.dir/RewriteUtils.cpp.o CMakeFiles/clang_delta.dir/SimpleInliner.cpp.o CMakeFiles/clang_delta.dir/SimplifyCallExpr.cpp.o CMakeFiles/clang_delta.dir/SimplifyCommaExpr.cpp.o CMakeFiles/clang_delta.dir/SimplifyDependentTypedef.cpp.o CMakeFiles/clang_delta.dir/SimplifyIf.cpp.o CMakeFiles/clang_delta.dir/SimplifyNestedClass.cpp.o CMakeFiles/clang_delta.dir/SimplifyRecursiveTemplateInstantiation.cpp.o CMakeFiles/clang_delta.dir/SimplifyStruct.cpp.o CMakeFiles/clang_delta.dir/SimplifyStructUnionDecl.cpp.o CMakeFiles/clang_delta.dir/TemplateArgToInt.cpp.o CMakeFiles/clang_delta.dir/TemplateNonTypeArgToInt.cpp.o CMakeFiles/clang_delta.dir/Transformation.cpp.o CMakeFiles/clang_delta.dir/TransformationManager.cpp.o CMakeFiles/clang_delta.dir/UnifyFunctionDecl.cpp.o CMakeFiles/clang_delta.dir/UnionToStruct.cpp.o CMakeFiles/clang_delta.dir/VectorToArray.cpp.o CMakeFiles/clang_delta.dir/git_version.cpp.o -o clang_delta   -L/usr/lib/llvm-18/lib  -Wl,-rpath,/usr/lib/llvm-18/lib /usr/lib/llvm-18/lib/libclang-cpp.so.18 -Wl,-rpath-link,/usr/lib/llvm-18/lib -lLLVMSupport
/usr/bin/ld: CMakeFiles/clang_delta.dir/TransformationManager.cpp.o: undefined reference to symbol '_ZN4llvm6TripleC1ERKNS_5TwineE@@LLVM_18'
/usr/bin/ld: /usr/lib/llvm-18/lib/libLLVM-18.so.1: error adding symbols: DSO missing from command line

In combination with #270, locally I can build everything with LLVM 18:

$ cmake .. -DLLVM_DIR=/usr/lib/llvm-18/lib/cmake/llvm -DCMAKE_INSTALL_PREFIX=$HOME/creduce-llvm18
-- The C compiler identification is GNU 11.4.0
-- The CXX compiler identification is GNU 11.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test HAVE_FFI_CALL
-- Performing Test HAVE_FFI_CALL - Success
-- Found FFI: /usr/lib/x86_64-linux-gnu/libffi.so
-- Could NOT find LibEdit (missing: LibEdit_INCLUDE_DIRS LibEdit_LIBRARIES)
-- Performing Test Terminfo_LINKABLE
-- Performing Test Terminfo_LINKABLE - Success
-- Found Terminfo: /usr/lib/x86_64-linux-gnu/libtinfo.so
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11")
-- Could NOT find zstd (missing: zstd_LIBRARY zstd_INCLUDE_DIR)
-- Found LibXml2: /usr/lib/x86_64-linux-gnu/libxml2.so (found version "2.9.13")
-- Could NOT find CURL (missing: CURL_LIBRARY CURL_INCLUDE_DIR)
-- Found LLVM 18.0.0
-- Using LLVMConfig.cmake in /usr/lib/llvm-18/lib/cmake/llvm
-- Could NOT find LibEdit (missing: LibEdit_INCLUDE_DIRS LibEdit_LIBRARIES)
-- Could NOT find zstd (missing: zstd_LIBRARY zstd_INCLUDE_DIR)
-- Could NOT find CURL (missing: CURL_LIBRARY CURL_INCLUDE_DIR)
-- Using ClangConfig.cmake in /usr/lib/cmake/clang-18
-- Found Perl: /usr/bin/perl (found version "5.34.0")
-- Found FLEX: /usr/bin/flex (found version "2.6.4")
-- Looking for dlfcn.h
-- Looking for dlfcn.h - found
-- Looking for inttypes.h
-- Looking for inttypes.h - found
-- Looking for memory.h
-- Looking for memory.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stdlib.h
-- Looking for stdlib.h - found
-- Looking for strings.h
-- Looking for strings.h - found
-- Looking for string.h
-- Looking for string.h - found
-- Looking for sys/stat.h
-- Looking for sys/stat.h - found
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for unistd.h
-- Looking for unistd.h - found
-- Performing Test SUPPORTS_FVISIBILITY_INLINES_HIDDEN_FLAG
-- Performing Test SUPPORTS_FVISIBILITY_INLINES_HIDDEN_FLAG - Success
-- Configuring done
-- Generating done
-- Build files have been written to: /home/kumbhar/workarena/repos/external/creduce/build_llvm18

$ make -j && make install
$ $HOME/creduce-llvm18/bin/creduce --version
creduce 2.11.0 (95cb7e1)

I am trying to get creduce up to date with HPC package manager Spack and hence it would be great if we could have these two PRs merged soon.

Thank you in advance!

chenyang78 commented 9 months ago

LGTM. Thanks, @pramodk !