diff options
author | Maxime Arthaud | 2016-06-27 12:10:52 -0700 |
---|---|---|
committer | Maxime Arthaud | 2016-06-27 12:10:52 -0700 |
commit | ccb03a5ffe680c8408bd5b681c16b594507cbf46 (patch) | |
tree | 8b90693e8d8ff079142f50fe2731b38b5b89779a | |
parent | 64c7698253754e89f2f12eb154200483888d4c91 (diff) | |
download | aur-ccb03a5ffe680c8408bd5b681c16b594507cbf46.tar.gz |
Upgrade to IKOS 1.1.0
-rw-r--r-- | .SRCINFO | 8 | ||||
-rw-r--r-- | PKGBUILD | 21 | ||||
-rw-r--r-- | llvm-3.8.patch | 183 |
3 files changed, 11 insertions, 201 deletions
@@ -1,6 +1,6 @@ pkgbase = ikos pkgdesc = A static analysis tool for C/C++ developed by NASA - pkgver = 1.0.0 + pkgver = 1.1.0 pkgrel = 1 url = https://ti.arc.nasa.gov/opensource/ikos/ arch = any @@ -14,12 +14,10 @@ pkgbase = ikos depends = llvm depends = llvm-libs depends = clang - source = https://ti.arc.nasa.gov/m/opensource/downloads/ikos/ikos-1.0.0.tar.gz + source = https://ti.arc.nasa.gov/m/opensource/downloads/ikos/ikos-1.1.0.tar.gz source = https://ti.arc.nasa.gov/m/opensource/downloads/ikos/IKOS_NASA_Open_Source_Agreement.pdf - source = llvm-3.8.patch - sha512sums = d8b71d401d002ee22d39b4c68ecd97ba098d334fa966cf6b0d4f3328bdd85fa60b68d3c66543f154933dbb4dd53247422243cdb12418338d85a6ef8bb35b9051 + sha512sums = aee0e0851c6d7a05b1c9f12efd3dba71aafc889c93fcfe958970b88dc2b134ed193f06010501ff0d40f9e5834eb0866b89f17c2a9b3b144c96213f733273dc66 sha512sums = 3caeffbe06254b3a181eee1f172bde48d7c8007e989b07928b0ce4e737759d5e2649d25419722c3b7a78ca8ddf408ce150a143490489641527cbcac479c241b7 - sha512sums = 2b0862679081be24772d2172fc1145833edf124f4ec54839925022428bb7db91e28e30be9fe8ccd0884f60526188db5ce1e621748e68b7e69e7423856a527596 pkgname = ikos @@ -1,7 +1,7 @@ # Maintainer: Maxime Arthaud <maxime@arthaud.me> pkgname=ikos -pkgver=1.0.0 +pkgver=1.1.0 pkgrel=1 pkgdesc='A static analysis tool for C/C++ developed by NASA' arch=('any') @@ -9,24 +9,19 @@ url='https://ti.arc.nasa.gov/opensource/ikos/' license=('custom:NOSA 1.3') depends=('gmp' 'boost-libs' 'python' 'sqlite' 'llvm' 'llvm-libs' 'clang') makedepends=('cmake' 'boost') -source=('https://ti.arc.nasa.gov/m/opensource/downloads/ikos/ikos-1.0.0.tar.gz' - 'https://ti.arc.nasa.gov/m/opensource/downloads/ikos/IKOS_NASA_Open_Source_Agreement.pdf' - 'llvm-3.8.patch') -sha512sums=('d8b71d401d002ee22d39b4c68ecd97ba098d334fa966cf6b0d4f3328bdd85fa60b68d3c66543f154933dbb4dd53247422243cdb12418338d85a6ef8bb35b9051' - '3caeffbe06254b3a181eee1f172bde48d7c8007e989b07928b0ce4e737759d5e2649d25419722c3b7a78ca8ddf408ce150a143490489641527cbcac479c241b7' - '2b0862679081be24772d2172fc1145833edf124f4ec54839925022428bb7db91e28e30be9fe8ccd0884f60526188db5ce1e621748e68b7e69e7423856a527596') +source=('https://ti.arc.nasa.gov/m/opensource/downloads/ikos/ikos-1.1.0.tar.gz' + 'https://ti.arc.nasa.gov/m/opensource/downloads/ikos/IKOS_NASA_Open_Source_Agreement.pdf') +sha512sums=('aee0e0851c6d7a05b1c9f12efd3dba71aafc889c93fcfe958970b88dc2b134ed193f06010501ff0d40f9e5834eb0866b89f17c2a9b3b144c96213f733273dc66' + '3caeffbe06254b3a181eee1f172bde48d7c8007e989b07928b0ce4e737759d5e2649d25419722c3b7a78ca8ddf408ce150a143490489641527cbcac479c241b7') prepare() { - cd "$srcdir/ikos-1.0.0" - - # Fix for llvm 3.8 - patch -p0 < ../llvm-3.8.patch + cd "$srcdir/ikos-1.1.0" mkdir build } build() { - cd "$srcdir/ikos-1.0.0/build" + cd "$srcdir/ikos-1.1.0/build" cmake \ -G "Unix Makefiles" \ @@ -38,7 +33,7 @@ build() { } package() { - cd "$srcdir/ikos-1.0.0/build" + cd "$srcdir/ikos-1.1.0/build" make install diff --git a/llvm-3.8.patch b/llvm-3.8.patch deleted file mode 100644 index 43a05941a237..000000000000 --- a/llvm-3.8.patch +++ /dev/null @@ -1,183 +0,0 @@ -Index: frontends/llvm/CMakeLists.txt -=================================================================== ---- frontends/llvm/CMakeLists.txt (révision 1079) -+++ frontends/llvm/CMakeLists.txt (copie de travail) -@@ -123,8 +123,8 @@ - find_package(LLVM REQUIRED) - message(STATUS "Found LLVM ${LLVM_VERSION}") - --if (NOT LLVM_VERSION EQUAL 3.7) -- message(FATAL_ERROR "llvm 3.7 required.") -+if (LLVM_VERSION VERSION_LESS "3.7") -+ message(FATAL_ERROR "llvm 3.7 or higher required.") - endif() - - set(LLVM_RUNTIME_OUTPUT_INTDIR "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin") -@@ -191,7 +191,6 @@ - core - instcombine - instrumentation -- ipa - ipo - irreader - mc -@@ -204,4 +203,10 @@ - ) - target_link_libraries(ikos-pp ${IKOS_PP_LLVM_LIBS}) - -+if (LLVM_VERSION VERSION_LESS "3.8") -+ # IPA is only available on llvm 3.7 and below -+ llvm_map_components_to_libnames(IKOS_PP_IPA ipa) -+ target_link_libraries(ikos-pp ${IKOS_PP_IPA}) -+endif() -+ - install(TARGETS ikos-pp RUNTIME DESTINATION bin OPTIONAL) -Index: frontends/llvm/src/ikos-pp/ikos_pp.cpp -=================================================================== ---- frontends/llvm/src/ikos-pp/ikos_pp.cpp (révision 1079) -+++ frontends/llvm/src/ikos-pp/ikos_pp.cpp (copie de travail) -@@ -182,10 +182,13 @@ - - llvm::legacy::PassManager pass_manager; - llvm::PassRegistry& Registry = *llvm::PassRegistry::getPassRegistry(); -+ - llvm::initializeAnalysis(Registry); - -+#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR == 7) - /// call graph and other IPA passes - llvm::initializeIPA(Registry); -+#endif - - if (PPLevel == simple) { - // -- SSA -@@ -251,7 +254,11 @@ - // loop-closed SSA - pass_manager.add(llvm::createLCSSAPass()); - // trivial invariants outside loops -+#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR == 7) - pass_manager.add(llvm::createBasicAliasAnalysisPass()); -+#else -+ pass_manager.add(llvm::createBasicAAWrapperPass()); -+#endif - pass_manager.add(llvm::createLICMPass()); // LICM needs alias analysis - pass_manager.add(llvm::createPromoteMemoryToRegisterPass()); - // dead loop elimination -Index: frontends/llvm/src/passes/llvm_to_ar.cpp -=================================================================== ---- frontends/llvm/src/passes/llvm_to_ar.cpp (révision 1079) -+++ frontends/llvm/src/passes/llvm_to_ar.cpp (copie de travail) -@@ -457,7 +457,7 @@ - UnifyFunctionExitNodes& ufen = getAnalysis< UnifyFunctionExitNodes >(*f); - - _functions.push_back(boost::shared_ptr< ARFunction >( -- new ARFunction(f, -+ new ARFunction(&*f, - ufen.getReturnBlock(), - ufen.getUnreachableBlock(), - ufen.getUnwindBlock()))); -@@ -532,7 +532,7 @@ - for (Module::global_iterator global = m.global_begin(); - global != m.global_end(); - global++) { -- _global_vars[global] = boost::shared_ptr< ARGlobalVar >( -+ _global_vars[&*global] = boost::shared_ptr< ARGlobalVar >( - new ARGlobalVar(UIDGenerator::nextUID())); - } - -@@ -1286,7 +1286,8 @@ - case Instruction::FCmp: - case Instruction::ICmp: { - CmpInst* cmp = CmpInst::Create((Instruction::OtherOps)e->getOpcode(), -- e->getPredicate(), -+ static_cast< CmpInst::Predicate >( -+ e->getPredicate()), - e->getOperand(0), - e->getOperand(1)); - cfg.split_blocks(cmp, cmp); -Index: frontends/llvm/src/passes/lower_cst_expr.cpp -=================================================================== ---- frontends/llvm/src/passes/lower_cst_expr.cpp (révision 1079) -+++ frontends/llvm/src/passes/lower_cst_expr.cpp (copie de travail) -@@ -180,7 +180,8 @@ - Instruction::OtherOps OtherOp = - (Instruction::OtherOps)(CstExp->getOpcode()); - NewInst = CmpInst::Create(OtherOp, -- CstExp->getPredicate(), -+ static_cast< CmpInst::Predicate >( -+ CstExp->getPredicate()), - CstExp->getOperand(0), - CstExp->getOperand(1), - CstExp->getName(), -Index: frontends/llvm/src/passes/mark_no_return_functions.cpp -=================================================================== ---- frontends/llvm/src/passes/mark_no_return_functions.cpp (révision 1079) -+++ frontends/llvm/src/passes/mark_no_return_functions.cpp (copie de travail) -@@ -73,7 +73,7 @@ - continue; - - bool mayHaveSideEffects = false; -- for (inst_iterator It = inst_begin(F), Et = inst_end(F); It != Et; ++It) -+ for (inst_iterator It = inst_begin(&*F), Et = inst_end(&*F); It != Et; ++It) - mayHaveSideEffects |= It->mayHaveSideEffects(); - - if (mayHaveSideEffects) -Index: frontends/llvm/src/utils/local.cpp -=================================================================== ---- frontends/llvm/src/utils/local.cpp (révision 1079) -+++ frontends/llvm/src/utils/local.cpp (copie de travail) -@@ -37,7 +37,13 @@ - new UnreachableInst(I->getContext(), I); - - // All instructions after this are dead. -- BasicBlock::iterator BBI = I, BBE = BB->end(); -+#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR == 7) -+ BasicBlock::iterator BBI = I; -+#else -+ BasicBlock::iterator BBI = I->getIterator(); -+#endif -+ BasicBlock::iterator BBE = BB->end(); -+ - while (BBI != BBE) { - if (!BBI->use_empty()) - BBI->replaceAllUsesWith(UndefValue::get(BBI->getType())); -@@ -85,7 +91,7 @@ - ++BBI; - if (!isa< UnreachableInst >(BBI)) { - // Don't insert a call to llvm.trap right before the unreachable. -- ikos_pp::changeToUnreachable(BBI, false); -+ ikos_pp::changeToUnreachable(&*BBI, false); - Changed = true; - } - break; -@@ -142,7 +148,7 @@ - /// change was made, false otherwise. - bool ikos_pp::removeUnreachableBlocks(Function& F) { - SmallPtrSet< BasicBlock*, 128 > Reachable; -- bool Changed = markAliveBlocks(F.begin(), Reachable); -+ bool Changed = markAliveBlocks(&*F.begin(), Reachable); - - // If there are unreachable blocks in the CFG... - if (Reachable.size() == F.size()) -@@ -154,17 +160,18 @@ - // Loop over all of the basic blocks that are not reachable, dropping all of - // their internal references... - for (Function::iterator BB = ++F.begin(), E = F.end(); BB != E; ++BB) { -- if (Reachable.count(BB)) -+ if (Reachable.count(&*BB)) - continue; - -- for (succ_iterator SI = succ_begin(BB), SE = succ_end(BB); SI != SE; ++SI) -+ for (succ_iterator SI = succ_begin(&*BB), SE = succ_end(&*BB); SI != SE; -+ ++SI) - if (Reachable.count(*SI)) -- (*SI)->removePredecessor(BB); -+ (*SI)->removePredecessor(&*BB); - BB->dropAllReferences(); - } - - for (Function::iterator I = ++F.begin(); I != F.end();) -- if (!Reachable.count(I)) -+ if (!Reachable.count(&*I)) - I = F.getBasicBlockList().erase(I); - else - ++I; |