Hello community, here is the log from the commit of package cvise for openSUSE:Factory checked in at 2020-05-09 22:19:59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/cvise (Old) and /work/SRC/openSUSE:Factory/.cvise.new.2738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cvise" Sat May 9 22:19:59 2020 rev:6 rq:802281 version:1.2.1+git.20200509.57058d4 Changes: -------- --- /work/SRC/openSUSE:Factory/cvise/cvise.changes 2020-05-08 23:06:33.698010550 +0200 +++ /work/SRC/openSUSE:Factory/.cvise.new.2738/cvise.changes 2020-05-09 22:20:13.663588009 +0200 @@ -1,0 +2,12 @@ +Sat May 09 17:17:38 UTC 2020 - mli...@suse.cz + +- Update to version 1.2.0+git.20200509.57058d4: + * Add assert about shell argument. + * Prevent no change in RenameParam pass. + * Move Peep::a to slow passes. + * Fix weird version in Docker example. + * Test fedora 32 and rawhide. + * Use shell=True only for test script. + * Run test-scrupt in subprocess with shell=True (#20). + +------------------------------------------------------------------- Old: ---- cvise-1.2.0+git.20200507.7cf63b5.tar.xz New: ---- cvise-1.2.1+git.20200509.57058d4.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cvise.spec ++++++ --- /var/tmp/diff_new_pack.UpvZC5/_old 2020-05-09 22:20:14.371587567 +0200 +++ /var/tmp/diff_new_pack.UpvZC5/_new 2020-05-09 22:20:14.375587564 +0200 @@ -17,7 +17,7 @@ Name: cvise -Version: 1.2.0+git.20200507.7cf63b5 +Version: 1.2.1+git.20200509.57058d4 Release: 0 Summary: Super-parallel Python port of the C-Reduce License: BSD-3-Clause ++++++ _service ++++++ --- /var/tmp/diff_new_pack.UpvZC5/_old 2020-05-09 22:20:14.407587544 +0200 +++ /var/tmp/diff_new_pack.UpvZC5/_new 2020-05-09 22:20:14.407587544 +0200 @@ -4,7 +4,7 @@ <param name="scm">git</param> <param name="changesgenerate">enable</param> <param name="filename">cvise</param> - <param name="versionformat">1.2.0+git.%cd.%h</param> + <param name="versionformat">1.2.1+git.%cd.%h</param> </service> <service mode="disabled" name="recompress"> <param name="file">*.tar</param> ++++++ cvise-1.2.0+git.20200507.7cf63b5.tar.xz -> cvise-1.2.1+git.20200509.57058d4.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.2.0+git.20200507.7cf63b5/.travis.yml new/cvise-1.2.1+git.20200509.57058d4/.travis.yml --- old/cvise-1.2.0+git.20200507.7cf63b5/.travis.yml 2020-05-07 14:54:48.000000000 +0200 +++ new/cvise-1.2.1+git.20200509.57058d4/.travis.yml 2020-05-09 19:01:23.000000000 +0200 @@ -51,11 +51,17 @@ - BUILD_TYPE=ASAN - DIST=opensusetw-llvm10 - - name: Fedora 31 DEBUG build (LLVM 9) + - name: Fedora 32 DEBUG build (LLVM 9) stage: build env: - BUILD_TYPE=DEBUG - - DIST=fedora31-llvm9 + - DIST=fedora32-llvm9 + + - name: Fedora dev DEBUG build (LLVM 10) + stage: build + env: + - BUILD_TYPE=DEBUG + - DIST=fedoradev-llvm10 before_install: # podman needs a basic register set up (packaging bug in the ppa) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.2.0+git.20200507.7cf63b5/Docker/Dockerfile-fedora31-llvm9 new/cvise-1.2.1+git.20200509.57058d4/Docker/Dockerfile-fedora31-llvm9 --- old/cvise-1.2.0+git.20200507.7cf63b5/Docker/Dockerfile-fedora31-llvm9 2020-05-07 14:54:48.000000000 +0200 +++ new/cvise-1.2.1+git.20200509.57058d4/Docker/Dockerfile-fedora31-llvm9 1970-01-01 01:00:00.000000000 +0100 @@ -1,7 +0,0 @@ -FROM fedora:31 - -RUN dnf install -y python3-pip python3-pytest llvm-devel clang-devel cmake make flex unifdef -RUN pip3 install Pebble - -WORKDIR /usr/src/cvise -VOLUME /usr/src/cvise diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.2.0+git.20200507.7cf63b5/Docker/Dockerfile-fedora32-llvm9 new/cvise-1.2.1+git.20200509.57058d4/Docker/Dockerfile-fedora32-llvm9 --- old/cvise-1.2.0+git.20200507.7cf63b5/Docker/Dockerfile-fedora32-llvm9 1970-01-01 01:00:00.000000000 +0100 +++ new/cvise-1.2.1+git.20200509.57058d4/Docker/Dockerfile-fedora32-llvm9 2020-05-09 19:01:23.000000000 +0200 @@ -0,0 +1,7 @@ +FROM fedora:31 + +RUN dnf install -y python3-pip python3-pytest llvm-devel clang-devel cmake make flex unifdef +RUN pip3 install Pebble + +WORKDIR /usr/src/cvise +VOLUME /usr/src/cvise diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.2.0+git.20200507.7cf63b5/Docker/Dockerfile-fedoradev-llvm10 new/cvise-1.2.1+git.20200509.57058d4/Docker/Dockerfile-fedoradev-llvm10 --- old/cvise-1.2.0+git.20200507.7cf63b5/Docker/Dockerfile-fedoradev-llvm10 1970-01-01 01:00:00.000000000 +0100 +++ new/cvise-1.2.1+git.20200509.57058d4/Docker/Dockerfile-fedoradev-llvm10 2020-05-09 19:01:23.000000000 +0200 @@ -0,0 +1,7 @@ +FROM fedora:rawhide + +RUN dnf install -y python3-pip python3-pytest llvm-devel clang-devel cmake make flex unifdef +RUN pip3 install Pebble + +WORKDIR /usr/src/cvise +VOLUME /usr/src/cvise diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.2.0+git.20200507.7cf63b5/INSTALL.md new/cvise-1.2.1+git.20200509.57058d4/INSTALL.md --- old/cvise-1.2.0+git.20200507.7cf63b5/INSTALL.md 2020-05-07 14:54:48.000000000 +0200 +++ new/cvise-1.2.1+git.20200509.57058d4/INSTALL.md 2020-05-09 19:01:23.000000000 +0200 @@ -17,7 +17,7 @@ $ podman run -it opensuse/tumbleweed bash 714d543633e1 $ zypper -n install cvise 714d543633e1 $ cvise --version -cvise 1.1.0 (unknown) +cvise 1.2.0 ``` ## From Source diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.2.0+git.20200507.7cf63b5/clang_delta/CMakeLists.txt new/cvise-1.2.1+git.20200509.57058d4/clang_delta/CMakeLists.txt --- old/cvise-1.2.0+git.20200507.7cf63b5/clang_delta/CMakeLists.txt 2020-05-07 14:54:48.000000000 +0200 +++ new/cvise-1.2.1+git.20200509.57058d4/clang_delta/CMakeLists.txt 2020-05-09 19:01:23.000000000 +0200 @@ -282,6 +282,7 @@ "/tests/rename-fun/multi.output" "/tests/rename-param/invalid.c" "/tests/rename-param/invalid.output" + "/tests/rename-param/stuck.ii" "/tests/rename-var/rename-var.c" "/tests/rename-var/rename-var.output" "/tests/replace-derived-class/replace-derived1.cpp" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.2.0+git.20200507.7cf63b5/clang_delta/RenameParam.cpp new/cvise-1.2.1+git.20200509.57058d4/clang_delta/RenameParam.cpp --- old/cvise-1.2.0+git.20200507.7cf63b5/clang_delta/RenameParam.cpp 2020-05-07 14:54:48.000000000 +0200 +++ new/cvise-1.2.1+git.20200509.57058d4/clang_delta/RenameParam.cpp 2020-05-09 19:01:23.000000000 +0200 @@ -50,13 +50,15 @@ public: explicit RenameParamVisitor(RenameParam *Instance) - : ConsumerInstance(Instance) + : Rewritten (false), ConsumerInstance(Instance) { } bool VisitFunctionDecl(FunctionDecl *FD); bool VisitDeclRefExpr(DeclRefExpr *DRE); + bool Rewritten; + private: RenameParam *ConsumerInstance; @@ -107,6 +109,8 @@ CurrPostfix = ConsumerInstance->validatePostfix(CanonicalFD, CurrPostfix); std::stringstream TmpSS; TmpSS << ConsumerInstance->ParamNamePrefix << CurrPostfix; + if (PD->getNameAsString().compare(TmpSS.str()) != 0) + Rewritten = true; ConsumerInstance->RewriteHelper->replaceVarDeclName(PD, TmpSS.str()); @@ -167,6 +171,8 @@ if (Ctx.getDiagnostics().hasErrorOccurred() || Ctx.getDiagnostics().hasFatalErrorOccurred()) TransError = TransInternalError; + else if (!RenameVisitor->Rewritten) + TransError = TransNoTextModificationError; } bool RenameParam::getPostfixValue(const std::string &Name, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.2.0+git.20200507.7cf63b5/clang_delta/tests/rename-param/stuck.ii new/cvise-1.2.1+git.20200509.57058d4/clang_delta/tests/rename-param/stuck.ii --- old/cvise-1.2.0+git.20200507.7cf63b5/clang_delta/tests/rename-param/stuck.ii 1970-01-01 01:00:00.000000000 +0100 +++ new/cvise-1.2.1+git.20200509.57058d4/clang_delta/tests/rename-param/stuck.ii 2020-05-09 19:01:23.000000000 +0200 @@ -0,0 +1,584 @@ +namespace std { +template < unsigned long b > struct d { + typedef long e; + constexpr operator e() { return b; } +}; +template < bool, typename > using aa = void; +template < bool, typename g, typename > using ac = g; +template < typename > using ad = int; +template < typename a > a ae(); +template < typename > class af; +template < class > class initializer_list { + int *b; + unsigned long c; +}; +template < typename > struct ag; +template < typename a > struct ag< af< a > > { + using e = a; + template < typename h > using ah = af< h >; +}; +} template < typename ai > struct aj { + typedef std::ag< ai > ak; + typedef typename ak::e al; + template < typename a > struct am { typedef typename ak::ah< a > an; }; +}; +namespace std { +template < typename > struct ao; +template < long, typename a > using ap = typename ao< a >::ab; +template < long, typename a > using j = typename ao< a >::ab; +template < typename a, a > struct aq {}; +template < typename a, a ar > using as = aq< a, __integer_pack(ar)... >; +template < long... at > using au = aq< unsigned long, at... >; +template < long ar > using av = as< unsigned long, ar >; +template < typename > class aw {}; +template < typename ax, typename... az > struct ao< aw< ax, az... > > { + typedef ax ab; +}; +template < long ay, typename... ba > ap< ay, aw< ba... > > bb(aw< ba... >); +template < typename a, typename ai > struct bc { + typedef typename aj< ai >::am< a >::an bd; +}; +template < typename a, typename ai = af< a > > class be { +public: + ~be(); + typename aj< typename bc< a, ai >::bd >::al operator[](long); +}; +template < typename a > class bf { +public: + a operator*(); +}; +template < typename a > bf< a > bg(); +} namespace bh { +template < class, class, class, class > class bi { +public: + int operator*(); + void operator++(); +}; +template < class bj, class bk, class bl, class bm, class bn, class bo, + class bq > +int operator!=(bi< bj, bk, bl, bm >, bi< bn, bo, bq, bm >); +template < template < class, class, class, class > class bp = bi > +class bs : public bp< int, int, int, int > {}; +template < int br > struct bu : bu< br - 1 > {}; +template <> struct bu< 0 > {}; +template < long i > using bt = std::d< i >; +namespace ca { +namespace bv { +template < class bw > auto bx(bw, bu< 1 >) -> decltype(std::d< 1 >()); +} +template < class bw > auto bx(bw p1) { return bv::bx(p1, bu< 2 >()); } +namespace bv { +template < class bw > void by(std::initializer_list< bw >); +template < class l, class m, class n, n... i > +void bz(l, m p2, std::aq< n, i... >) { + by({(p2(std::d< i >()), 0)...}); +} +template < class l, class m > void cb(l p1, m) { + auto bx = ca::bx(p1); + auto cc = std::av< bx >(); + bz(std::ae< l >, std::ae< m >(), cc); +} +} template < class l, class m > void cb(l, m) { + bv::cb(std::ae< l >, std::ae< m >()); +} +} } namespace ce { +template < class > constexpr auto p() -> decltype(std::d< 1 >{}) { return {}; } +template < class, template < class, class > class, class > struct cf; +template < class, template < class, class > class, class, class > struct cg; +template < class ch, template < class, class > class o, class q > +struct cg< ch, o, std::aw< q >, std::aa< !q(), void > > { + using ab = int; +}; +template < class ch, template < class, class > class o, class s, class... y > +struct cf< ch, o, std::aw< s, y... > > { + using cp = o< ch, s >; + using ab = + std::ac< p< cp >(), cp, typename cg< ch, o, std::aw< s >, void >::ab >; +}; +template < class, template < class, class > class o > struct cj { + using ab = typename cf< int, o, std::aw< int > >::ab; +}; +} template < class ch, template < class, class > class o > +using ck = typename ce::cj< ch, o >::ab::ab; +namespace ce { +template < class, class > struct cl; +template < class, class > struct ct; +template < class, class > struct cm; +template < class, class > struct u; +template < class, class > struct cn; +template < class, class > struct co; +template < class, class > struct w; +template < class, class > struct x; +template < class, class > struct cx; +template < class, class > struct t; +template < class, class > struct MolecularDiffusionType; +template < class, class > struct cq; +} namespace bh { +template < typename > class cr {}; +} template < template < typename > class, template < long > class, class > +struct cs; +template < template < typename > class dd, template < long > class cu, + unsigned long... cv > +struct cs< dd, cu, std::au< cv... > > { + using ab = dd< cu< cv >... >; +}; +template < int > class bigunsignedint; +namespace bh { +class cw { +public: + bs<> begin(); + bs<> end(); +}; +enum cy { cz }; +} template < class ch > class da { + using db = typename ck< ch, ce::cn >::db; + using dc = typename ck< ch, ce::cn >::dl; + using de = typename ck< ch, ce::cx >::dl; + using dn = typename db::df< 0 >::v; + +public: + dn dg(); + dc dh(); + de di(); +}; +template < class db > struct dj { using z = typename db::dk::IndexType; }; +namespace bh { +template < int > struct df {}; +template < typename dm > class IteratorRange { +public: + typedef dm iterator; + iterator begin(); + iterator end(); +}; +template < typename GV, int codim > +auto entities(GV p1, df< codim >) + -> IteratorRange< decltype(p1.template begin< codim >()) >; +template < typename GV > +auto elements(GV p1) -> decltype(entities(p1, df< 0 >())); +template < class ViewTraits > class db { +public: + typedef ViewTraits Traits; + typedef typename Traits ::dk dk; + template < int cd > struct df { + typedef typename Traits ::df< cd >::dm dm; + typedef typename Traits ::df< cd >::v v; + }; + template < int cd > typename df< cd >::dm begin(); +}; +template < class > struct DefaultLevelGridViewTraits; +template < class GridImp > struct DefaultLeafGridViewTraits { + typedef GridImp ct; + typedef typename ct ::Traits ::LeafIndexSet dk; + template < int cd > struct df { + typedef typename ct ::Traits ::df< cd >::Partition< cz >::LeafIterator dm; + typedef typename ct ::df< cd > v; + }; +}; +template < int, class > class EntityIterator; +class dk; +template < class GridFamily > class ct { +public: + typedef typename GridFamily::Traits::LeafGridView LeafGridView; + template < int > struct df {}; +}; +template < class GridFamily > +class GridDefaultImplementation : public ct< GridFamily > { +public: + typedef typename GridFamily::Traits Traits; +}; +template < + int, int, class GridImp, template < int, int, class > class, + template < int, int, class > class, template < int, cy, class > class, + template < class > class, template < class > class, + template < class > class, template < class > class, + template < class > class, template < int, cy, class > class, class, class, + class, class, class, class, class, template < class > class, + template < class > class LeafGridViewTraits, template < int, class > class > +struct GridTraits { + template < int cd > struct df { + template < int > struct Partition { + typedef EntityIterator< cd, GridImp > LeafIterator; + }; + }; + typedef db< LeafGridViewTraits< GridImp > > LeafGridView; + typedef dk LeafIndexSet; +}; +template < int codim, class ct > class EntityIterator { +public: + void operator++(); + typename ct::df< codim > operator*(); + bool operator!=(EntityIterator); +}; +class dk { +public: + typedef int IndexType; +}; +template < int, class > class YaspGrid; +template < int, class > class YaspEntitySeed; +template < class > class YaspIntersectionIterator; +template < class > class YaspHierarchicIterator; +template < int, int, class > class YaspGeometry; +template < int, int, class > class YaspEntity; +template < class > class YaspIntersection; +template < int, int, class > class YaspLevelIterator; +template < class, int > class YaspIndexSet; +template < class > class YaspGlobalIdSet; +template < int dim, class Coordinates > struct YaspGridFamily { + typedef GridTraits< + dim, dim, YaspGrid< dim, Coordinates >, YaspGeometry, YaspEntity, + YaspLevelIterator, YaspIntersection, YaspIntersection, + YaspIntersectionIterator, YaspIntersectionIterator, + YaspHierarchicIterator, YaspLevelIterator, + YaspIndexSet< YaspGrid< dim, Coordinates >, false >, + YaspIndexSet< YaspGrid< dim, Coordinates >, true >, + YaspGlobalIdSet< YaspGrid< dim, Coordinates > >, bigunsignedint< dim >, + YaspGlobalIdSet< YaspGrid< dim, Coordinates > >, bigunsignedint< dim >, + int, DefaultLevelGridViewTraits, DefaultLeafGridViewTraits, + YaspEntitySeed > + Traits; +}; +template < int dim, class = int > +class YaspGrid + : public GridDefaultImplementation< YaspGridFamily< dim, int > > {}; +} template < template < long > class bw, class Indices > +struct MultiDomainTupleSharedPtrConst { + template < long i > using PtrType = std::bf< bw< i > >; + using ab = typename cs< std::aw, PtrType, Indices >::ab; +}; +template < template < long > class SubDomainTypeTag, int i > +struct SubDomainFVGridGeometryImpl { + using ab = ck< SubDomainTypeTag< i >, ce::cn >; +}; +template < template < long > class SubDomainTypeTag, int i > +struct SubDomainSolutionVectorImpl { + using ab = ck< SubDomainTypeTag< i >, ce::u >; +}; +template < typename... SubDomainTypeTags > struct StaggeredMultiDomainTraits { + static constexpr long numSubDomains = sizeof...(SubDomainTypeTags); + template < long id > + using SubDomainTypeTag = std::j< id, std::aw< SubDomainTypeTags... > >; + using Indices = std::av< numSubDomains >; + template < long id > + using SubDomainScalar = ck< SubDomainTypeTag< id >, ce::cl >; + template < long id > + using SubDomainSolutionVector = + typename SubDomainSolutionVectorImpl< SubDomainTypeTag, id >::ab; + template < int id > struct SubDomain { + using cn = typename SubDomainFVGridGeometryImpl< SubDomainTypeTag, id >::ab; + }; + using cl = typename cs< std::ad, SubDomainScalar, Indices >::ab; + using u = typename cs< bh::cr, SubDomainSolutionVector, Indices >::ab; + template < template < long > class bw > + using TupleOfSharedPtrConst = + typename MultiDomainTupleSharedPtrConst< bw, Indices >::ab; +}; +template < class ch, class Assembler > +class SubDomainCCLocalAssemblerBase : da< ch > { + using u = typename Assembler::u; + using SubSolutionVector = ck< ch, ce::u >; + using t = ck< ch, ce::t >; + using cn = typename t::cn; + using db = typename cn::db; + using dn = typename db::df< 0 >::v; + using CouplingManager = typename Assembler::CouplingManager; + +public: + SubDomainCCLocalAssemblerBase(Assembler, dn, u, CouplingManager); + void assembleResidual(SubSolutionVector) { + auto dg = this->dg(); + auto dh = this->dh(); + auto di = this->di(); + di.bind(dg, dh, 0); + } +}; +template < class, class, bool > class SubDomainCCLocalAssembler; +template < class ch, class Assembler > +class SubDomainCCLocalAssembler< ch, Assembler, true > + : public SubDomainCCLocalAssemblerBase< ch, Assembler > { + using ParentType = SubDomainCCLocalAssemblerBase< ch, Assembler >; + ParentType::ParentType; +}; +template < class MDTraits, bool useImplicitAssembly = true > +class MultiDomainFVAssembler { + template < long id > + using SubDomainTypeTag = typename MDTraits::SubDomain< id >; + +public: + using cl = typename MDTraits::cl; + template < long id > using cn = typename MDTraits::SubDomain< id >::cn; + using u = typename MDTraits::u; + using ResidualType = u; + using CouplingManager = int; + static constexpr bool isImplicit() { return useImplicitAssembly; } + using GridGeometryTuple = typename MDTraits::TupleOfSharedPtrConst< cn >; + using ThisType = MultiDomainFVAssembler; + template < int id > struct SubDomainAssemblerType { + using ab = SubDomainCCLocalAssembler< SubDomainTypeTag< id >, ThisType, + isImplicit() >; + }; + template < long id > + using SubDomainAssembler = typename SubDomainAssemblerType< id >::ab; + void assembleResidual(u p1) { assembleResidual(*residual_, p1); } + void assembleResidual(ResidualType p1, u p2) { + using namespace bh::ca; + auto __trans_tmp_1(p1); + cb(__trans_tmp_1, + [&](auto domainId) { assembleResidual_(domainId, domainId, p2); }); + } + template < unsigned long i > auto gridGeometry(bh::bt< i > p1) { + return *std::bb< p1 >(gridGeometryTuple_); + } + template < unsigned long i > auto gridView(bh::bt< i > p1) { + return gridGeometry(p1).gridView(); + } + std::bf< CouplingManager > couplingManager_; + template < unsigned long i, class SubRes > + void assembleResidual_(bh::bt< i > p1, SubRes p2, u p3) { + assemble_(p1, [&](auto dg) { + SubDomainAssembler< i > subDomainAssembler(*this, dg, p3, + *couplingManager_); + subDomainAssembler.assembleResidual(p2); + }); + } + template < unsigned long i, class AssembleElementFunc > + void assemble_(bh::bt< i > p1, AssembleElementFunc p2) { + auto __trans_tmp_2 = gridView(p1); + for (auto dg : elements(__trans_tmp_2)) + p2(dg); + } + GridGeometryTuple gridGeometryTuple_; + std::bf< u > residual_; +}; +template < class > class PDESolver { +public: + MultiDomainFVAssembler< StaggeredMultiDomainTraits< int > > assembler(); +}; +template < class Assembler > class NewtonSolver : PDESolver< Assembler > { + using cl = typename Assembler::cl; + using u = typename Assembler::ResidualType; + u newtonBegin_u; + virtual void newtonBegin() { + this->assembler().assembleResidual(newtonBegin_u); + } + std::be< cl > distanceFromLastLinearization_; +}; +template < class Assembler > +class MultiDomainNewtonSolver : NewtonSolver< Assembler > { +public: + MultiDomainNewtonSolver(std::bf< Assembler >, std::bf< int >, std::bf< int >); +}; +template < class > class FicksLawImplementation; +template < class GG > class FVGridVariables { +public: + using cn = GG; +}; +namespace ce { +template < class ch > struct t< ch, int > { + using GG = ck< ch, cn >; + using ab = FVGridVariables< GG >; +}; +template < class ch > struct u< ch, int > { using ab = int; }; +} template < class GV > class BaseGridGeometry { + using GridIndexType = typename dj< GV >::z; + using dn = typename GV::df< 0 >::v; + +public: + using db = GV; + db gridView(); + dn dg(GridIndexType); +}; +template < class cn > class CCSimpleConnectivityMap { + using db = typename cn::db; + using GridIndexType = typename dj< db >::z; + struct DataJ { + GridIndexType globalJ; + bh::cw scvfsJ; + }; + +public: + std::be< DataJ > operator[](GridIndexType); +}; +template < class GG > class CCTpfaFVElementGeometry { +public: + using SubControlVolumeFace = typename GG::SubControlVolumeFace; + using cn = GG; + cn gridGeometry(); +}; +struct CCTpfaDefaultGridGeometryTraits { + using SubControlVolumeFace = int; + template < class cn > using ConnectivityMap = CCSimpleConnectivityMap< cn >; + template < class cn, bool > using dl = CCTpfaFVElementGeometry< cn >; +}; +template < class, bool, class = CCTpfaDefaultGridGeometryTraits > +class CCTpfaFVGridGeometry; +template < class GV, class Traits > +class CCTpfaFVGridGeometry< GV, false, Traits > + : public BaseGridGeometry< GV > { + using ThisType = CCTpfaFVGridGeometry; + using ConnectivityMap = typename Traits::ConnectivityMap< ThisType >; + +public: + using dl = typename Traits::dl< ThisType, false >; + using SubControlVolumeFace = typename Traits::SubControlVolumeFace; + ConnectivityMap connectivityMap(); +}; +template < class Traits > class CCGridVolumeVariables { + using ThisType = CCGridVolumeVariables; + +public: + static constexpr bool cachingEnabled = false; + using dl = typename Traits::dl< ThisType, cachingEnabled >; +}; +struct CCTpfaDefaultGridVolumeVariablesTraits { + template < class, bool > using dl = int; +}; +template < class GFVC > class CCTpfaElementFluxVariablesCache { + using x = typename GFVC::Traits::x; + +public: + using w = typename GFVC::w; + template < class dc, class ElementVolumeVariables > + void bind(typename dc::cn::db::df< 0 >::v, dc p2, + ElementVolumeVariables p3) { + auto gridGeometry = p2.gridGeometry(); + auto connectivityMapI = gridGeometry.connectivityMap()[0]; + x filler(0); + auto elementJ = gridGeometry.dg(connectivityMapI[0].globalJ); + for (auto scvfIdx : connectivityMapI[0].scvfsJ) { + auto scvfJ(scvfIdx); + filler.fill(this, fluxVarsCache_[0], elementJ, p2, p3, scvfJ); + } + } + std::be< w > fluxVarsCache_; +}; +template < class FVC, class FVCF > struct CCTpfaDefaultGridFVCTraits { + using w = FVC; + using x = FVCF; + template < class cx, bool > using dl = CCTpfaElementFluxVariablesCache< cx >; +}; +template < class w, class x, bool, class = CCTpfaDefaultGridFVCTraits< w, x > > +class CCTpfaGridFluxVariablesCache; +template < class FVC, class FVCF, class TheTraits > +class CCTpfaGridFluxVariablesCache< FVC, FVCF, false, TheTraits > { + using ThisType = CCTpfaGridFluxVariablesCache; + +public: + using Traits = TheTraits; + using w = typename Traits::w; + static constexpr bool cachingEnabled = false; + using dl = typename Traits::dl< ThisType, cachingEnabled >; +}; +namespace ce { +template < class ch > struct cn< ch, int > { + using db = typename ck< ch, ct >::LeafGridView; + using ab = CCTpfaFVGridGeometry< db, 0 >; +}; +template < class ch > struct co< ch, int > { + using ab = CCGridVolumeVariables< CCTpfaDefaultGridVolumeVariablesTraits >; +}; +template < class ch > struct cx< ch, int > { + using w = ck< ch, w >; + using x = ck< ch, x >; + using ab = CCTpfaGridFluxVariablesCache< w, x, 0 >; +}; +template < class ch > struct cl< ch, int > { using ab = double; }; +} template < class > class PorousMediumFluxVariablesCacheImplementation; +template < class ch > +using PorousMediumFluxVariablesCache = + PorousMediumFluxVariablesCacheImplementation< ch >; +template < class ch > +class DiffusionCacheChooser + : public ck< ch, ce::MolecularDiffusionType >::Cache {}; +template < class ch > +class PorousMediumFluxVariablesCacheImplementation + : public DiffusionCacheChooser< ch > {}; +template < class > class PorousMediumFluxVariablesCacheFillerImplementation; +template < class ch > +using PorousMediumFluxVariablesCacheFiller = + PorousMediumFluxVariablesCacheFillerImplementation< ch >; +template < class ch > class PorousMediumFluxVariablesCacheFillerImplementation { + using cm = ck< ch, ce::cm >; + using db = typename ck< ch, ce::cn >::db; + using dc = typename ck< ch, ce::cn >::dl; + using SubControlVolumeFace = typename dc::SubControlVolumeFace; + using ElementVolumeVariables = typename ck< ch, ce::co >::dl; + using dn = typename db::df< 0 >::v; + +public: + PorousMediumFluxVariablesCacheFillerImplementation(cm); + template < class FluxVariablesCacheContainer, class w > + void fill(FluxVariablesCacheContainer, w p2, dn p3, dc p4, + ElementVolumeVariables p5, SubControlVolumeFace p6) { + using DiffusionType = ck< ch, ce::MolecularDiffusionType >; + using DiffusionFiller = typename DiffusionType::Cache::Filler; + DiffusionFiller::fill(p2, 0, 0, 0, p3, p4, p5, p6, + this); + } +}; +template < class ch > using FicksLaw = FicksLawImplementation< ch >; +template < class ch > class FicksLawImplementation { + using cl = ck< ch, ce::cl >; + using cm = ck< ch, ce::cm >; + using dc = typename ck< ch, ce::cn >::dl; + using SubControlVolumeFace = typename dc::SubControlVolumeFace; + using db = typename ck< ch, ce::cn >::db; + using ElementVolumeVariables = typename ck< ch, ce::co >::dl; + using dn = typename db::df< 0 >::v; + using w = ck< ch, ce::w >; + using cq = ck< ch, ce::cq >; + class TpfaFicksLawCacheFiller { + public: + template < class x > + static void fill(w p1, int p2, int p3, cm p4, + dn p5, dc p6, ElementVolumeVariables p7, + SubControlVolumeFace p8, x) { + p1.updateDiffusion(p4, p5, p6, p7, p8, + p2, p3); + } + }; + class TpfaFicksLawCache { + public: + using Filler = TpfaFicksLawCacheFiller; + void updateDiffusion(cm, dn, dc, ElementVolumeVariables, + SubControlVolumeFace, int, int) { + calculateTransmissibility; + } + }; + +public: + using Cache = TpfaFicksLawCache; + static cl calculateTransmissibility() { + [](auto) { + if constexpr (cq::isTracerFluidSystem()) + ; + }; + } +}; +namespace ce { +template < class ch > struct w< ch, int > { + using ab = PorousMediumFluxVariablesCache< ch >; +}; +template < class ch > struct x< ch, int > { + using ab = PorousMediumFluxVariablesCacheFiller< ch >; +}; +template < class ch > struct MolecularDiffusionType< ch, int > { + using ab = FicksLaw< ch >; +}; +} class Base { + static bool isTracerFluidSystem(); +}; +namespace ce { +template < class ch > struct cm< ch, int > { using ab = int; }; +template < class ch > struct cq< ch, int > { using ab = Base; }; +template < class ch > struct ct< ch, int > { using ab = bh::YaspGrid< 2 >; }; +} main() { + using DarcyTypeTag = int; + using Traits = StaggeredMultiDomainTraits< DarcyTypeTag >; + using CouplingManager = int; + auto couplingManager = std::bg< CouplingManager >(); + using Assembler = MultiDomainFVAssembler< Traits >; + auto assembler = std::bg< Assembler >(); + auto linearSolver = std::bg< int >(); + using NewtonSolver = MultiDomainNewtonSolver< Assembler >; + NewtonSolver(assembler, linearSolver, couplingManager); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.2.0+git.20200507.7cf63b5/clang_delta/tests/test_clang_delta.py new/cvise-1.2.1+git.20200509.57058d4/clang_delta/tests/test_clang_delta.py --- old/cvise-1.2.0+git.20200507.7cf63b5/clang_delta/tests/test_clang_delta.py 2020-05-07 14:54:48.000000000 +0200 +++ new/cvise-1.2.1+git.20200509.57058d4/clang_delta/tests/test_clang_delta.py 2020-05-09 19:01:23.000000000 +0200 @@ -24,6 +24,15 @@ output = subprocess.check_output(cmd, shell=True, encoding='utf8') assert output.strip() == expected + @classmethod + def check_error_message(cls, testcase, arguments, error_message): + current = os.path.dirname(__file__) + binary = os.path.join(current, '../clang_delta') + cmd = '%s %s %s' % (binary, os.path.join(current, testcase), arguments) + proc = subprocess.run(cmd, shell=True, encoding='utf8', stdout=subprocess.PIPE) + assert proc.returncode == 255 + assert proc.stdout.strip() == error_message + def test_aggregate_to_scalar_cast(self): self.check_clang_delta('aggregate-to-scalar/cast.c', '--transformation=aggregate-to-scalar --counter=1') @@ -418,6 +427,9 @@ def test_rename_param_invalid(self): self.check_clang_delta('rename-param/invalid.c', '--transformation=rename-param --counter=1') + def test_rename_param_stuck(self): + self.check_error_message('rename-param/stuck.ii', '--transformation=rename-param --counter=1', 'Error: No modification to the transformed program!') + def test_rename_var_rename_var(self): self.check_clang_delta('rename-var/rename-var.c', '--transformation=rename-var --counter=1') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.2.0+git.20200507.7cf63b5/cvise/pass_groups/all.json new/cvise-1.2.1+git.20200509.57058d4/cvise/pass_groups/all.json --- old/cvise-1.2.0+git.20200507.7cf63b5/cvise/pass_groups/all.json 2020-05-07 14:54:48.000000000 +0200 +++ new/cvise-1.2.1+git.20200509.57058d4/cvise/pass_groups/all.json 2020-05-09 19:01:23.000000000 +0200 @@ -153,7 +153,7 @@ {"pass": "clex", "arg": "rm-tok-pattern-8", "include": ["slow"]}, {"pass": "clex", "arg": "rm-tok-pattern-4", "exclude": ["slow"]}, {"pass": "clang", "arg": "local-to-global", "c": true}, - {"pass": "peep", "arg": "a"}, + {"pass": "peep", "arg": "a", "include": ["slow"]}, {"pass": "peep", "arg": "c"}, {"pass": "peep", "arg": "b", "include": ["slow"]}, {"pass": "ints", "arg": "a"}, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.2.0+git.20200507.7cf63b5/cvise/pass_groups/opencl-120.json new/cvise-1.2.1+git.20200509.57058d4/cvise/pass_groups/opencl-120.json --- old/cvise-1.2.0+git.20200507.7cf63b5/cvise/pass_groups/opencl-120.json 2020-05-07 14:54:48.000000000 +0200 +++ new/cvise-1.2.1+git.20200509.57058d4/cvise/pass_groups/opencl-120.json 2020-05-09 19:01:23.000000000 +0200 @@ -132,7 +132,7 @@ {"pass": "clex", "arg": "rm-toks-16"}, {"pass": "clex", "arg": "rm-tok-pattern-8", "include": ["slow"]}, {"pass": "clex", "arg": "rm-tok-pattern-4", "exclude": ["slow"]}, - {"pass": "peep", "arg": "a"}, + {"pass": "peep", "arg": "a", "include": ["slow"]}, {"pass": "peep", "arg": "c"}, {"pass": "peep", "arg": "b", "include": ["slow"]}, {"pass": "ints", "arg": "a"}, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.2.0+git.20200507.7cf63b5/cvise/passes/abstract.py new/cvise-1.2.1+git.20200509.57058d4/cvise/passes/abstract.py --- old/cvise-1.2.0+git.20200507.7cf63b5/cvise/passes/abstract.py 2020-05-07 14:54:48.000000000 +0200 +++ new/cvise-1.2.1+git.20200509.57058d4/cvise/passes/abstract.py 2020-05-09 19:01:23.000000000 +0200 @@ -114,8 +114,10 @@ def __init__(self, pid_queue): self.pid_queue = pid_queue - def run_process(self, cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE): - proc = subprocess.Popen(cmd, stdout=stdout, stderr=stderr, universal_newlines=True, encoding='utf8') + def run_process(self, cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=False): + if shell: + assert isinstance(cmd, str) + proc = subprocess.Popen(cmd, stdout=stdout, stderr=stderr, universal_newlines=True, encoding='utf8', shell=shell) if self.pid_queue: self.pid_queue.put(ProcessEvent(proc.pid, ProcessEventType.STARTED)) stdout, stderr = proc.communicate() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.2.0+git.20200507.7cf63b5/cvise/utils/testing.py new/cvise-1.2.1+git.20200509.57058d4/cvise/utils/testing.py --- old/cvise-1.2.0+git.20200507.7cf63b5/cvise/utils/testing.py 2020-05-07 14:54:48.000000000 +0200 +++ new/cvise-1.2.1+git.20200509.57058d4/cvise/utils/testing.py 2020-05-09 19:01:23.000000000 +0200 @@ -10,7 +10,6 @@ import platform import shutil import signal -import subprocess import sys import tempfile import weakref @@ -115,8 +114,7 @@ def run_test(self): try: os.chdir(self.folder) - cmd = [self.test_script] - _, _, returncode = ProcessEventNotifier(self.pid_queue).run_process(cmd) + _, _, returncode = ProcessEventNotifier(self.pid_queue).run_process(self.test_script, shell=True) finally: os.chdir(self.pwd) return returncode