You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: BreakingChanges.md
+24Lines changed: 24 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,30 @@
4
4
5
5
*None*
6
6
7
+
## v2604
8
+
9
+
- The function `HelperAnalyses::getAliasInfo()` no longer returns a `LLVMAliasSet &`, but a `LLVMAliasInfoRef`.
10
+
- The location of the library summary `FunctionDataFlowFacts` and `LLVMFunctionDataFlowFacts` has moved to `phasar/Utils/` and `phasar/PhasarLLVM/Utils`, respectively.
11
+
-`IDESolver::initialize()` does no longer return a `bool`. Now, you are always allowed to call `next()` at least once.
12
+
-`IntraMonoProblem` and `InterMonoProblem`, and all reference-implementations of these problems do not receive a TypeHierarchy-pointer anymore in the ctor.
13
+
- Requiring C++20 instead of C++17
14
+
- Type-traits and other templates that are specialized now use `requires` instead of `enable_if`, wherever possible. This may reduce the number of (defaulted) template parameters in some cases.
15
+
- The `AdjacencyList` struct now now has one more template argument to denote the intege-like `vertex_t` type. It is the second template argument (which previously was the EdgeType). The edge-type is now denoted by the *third* template argument.
16
+
- The `AdjacencyList` switches from using `llvm::NoneType` as empty-node marker to `psr::EmptyType` for forward-compatibility with LLVM-16 that removes `llvm::NoneType`.
17
+
18
+
- Removed `SpecialSummaries`.
19
+
- Removed `Hexastore` and the corresponding database queries.
20
+
- Removed `LLVMTypeHierarchy` (and `LLVMTypeHierarchyData`), which is superceeded by `DIBasedTypeHierarchy`.
21
+
- Removed `Resolver::preCall()`, `Resolver::postCall()`, and `Resolver::otherInst()`.
22
+
- Removed `TypestateDescription::start()`. Instead apply `TypestateDescription::getNextState()` on `TypestateDescription::uninit()`.
23
+
- Removed `LLVMProjectIRDB::getParsedIRModuleOrNull()`. Use `LLVMProjectIRDB::getParsedIRModuleOrErr()` instead.
24
+
- Removed `DIBasedTypeHierarchy::isVTable()` and `DIBasedTypeHierarchy::removeVTablePrefix()`. Use the corresponding functions from `LLVMVFTableProvider` instead.
25
+
- Removed the CMake variable `PHASAR_HAS_SQLITE` as we removed the dependency on sqlite3.
26
+
- The CMake Option `BUILD_PHASAR_CLANG` is no longer `ON` by default.
27
+
- Removed the dependency to boost:
28
+
- Removed the boost-related command-line options in `bootstrap.sh`
29
+
-`InstallAptDependencies.sh` no longer installs boost (so, boost is also no longer built into PhASAR's Docker containers)
option(USE_LLVM_FAT_LIB"Link against libLLVM.so instead of the individual LLVM libraries if possible (default is OFF; always on if BUILD_SHARED_LIBS is ON)"OFF)
306
335
307
336
# LLVM
308
-
if (NOT PHASAR_LLVM_VERSION)
309
-
set(PHASAR_LLVM_VERSION 15)
310
-
endif()
337
+
set(PHASAR_LLVM_VERSION 16 CACHESTRING"The LLVM major-version that PhASAR should use")
338
+
311
339
include(add_llvm)
312
340
add_llvm()
313
341
@@ -328,29 +356,34 @@ if(PHASAR_IN_TREE)
328
356
set (PHASAR_USE_Z3 OFF)
329
357
else()
330
358
if(PHASAR_USE_Z3)
331
-
# This z3-version is the same version LLVM requires; however, we cannot just use Z3 via the LLVM interface
332
-
# as it lacks some functionality (such as z3::expr::simplify()) that we require
333
-
334
-
# FindZ3.cmake by llvm tries to compile a snippet with Z3 which crashes on arm with sanitizers enabled
335
-
set(SAFE_CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
336
-
set(CMAKE_CXX_FLAGS"")
337
-
find_package(Z34.7.1REQUIRED)
338
-
set(CMAKE_CXX_FLAGS"${SAFE_CMAKE_CXX_FLAGS}")
339
-
340
-
if(Z3_FOUND)
341
-
if (NOTTARGET z3)
342
-
add_library(z3IMPORTEDSHARED)
343
-
set_property(TARGETz3PROPERTY
344
-
IMPORTED_LOCATION${Z3_LIBRARIES})
345
-
set_property(TARGETz3PROPERTY
346
-
INTERFACE_INCLUDE_DIRECTORIES${Z3_INCLUDE_DIR})
359
+
if (TARGET z3::libz3)
360
+
# When including SVF, it also tries to find z3, but in addition to LLVM's search it already creates a target: z3::libz3.
361
+
# Reuse it here:
362
+
if(NOTTARGET z3)
363
+
add_library(z3ALIASz3::libz3)
364
+
endif()
365
+
else()
366
+
# FindZ3.cmake by llvm tries to compile a snippet with Z3 which crashes on arm with sanitizers enabled
367
+
set(SAFE_CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
368
+
set(CMAKE_CXX_FLAGS"")
369
+
find_package(Z3REQUIRED)
370
+
set(CMAKE_CXX_FLAGS"${SAFE_CMAKE_CXX_FLAGS}")
371
+
372
+
if(Z3_FOUND)
373
+
if (NOTTARGET z3)
374
+
add_library(z3IMPORTEDSHARED)
375
+
set_target_properties(z3PROPERTIES
376
+
IMPORTED_LOCATION${Z3_LIBRARIES}
377
+
INTERFACE_INCLUDE_DIRECTORIES${Z3_INCLUDE_DIR}
378
+
)
379
+
endif()
347
380
endif()
348
381
endif()
349
382
endif()
350
383
endif()
351
384
352
385
# Clang
353
-
option(BUILD_PHASAR_CLANG"Build the phasar_clang library (default is ON)"ON)
386
+
option(BUILD_PHASAR_CLANG"Build the phasar_clang library (default is OFF)"OFF)
0 commit comments