fix ARM builds
* spot/misc/bitvect.hh (bitvect_array::at): Fix pointer cast. * spot/twa/bddprint.cc: Adjust to use signed char* explicitly. * spot/twaalgos/gtec/gtec.hh: Work around GCC bug #90309. * .gitlab-ci.yml: Add raspbian build.
This commit is contained in:
parent
a7e4cb4182
commit
0da5f44cd2
4 changed files with 40 additions and 14 deletions
|
|
@ -83,6 +83,7 @@ alpine-gcc:
|
||||||
- ./configure
|
- ./configure
|
||||||
- make
|
- make
|
||||||
- make check
|
- make check
|
||||||
|
- make distcheck || { chmod -R u+w ./spot-*; false; }
|
||||||
artifacts:
|
artifacts:
|
||||||
when: always
|
when: always
|
||||||
paths:
|
paths:
|
||||||
|
|
@ -284,3 +285,19 @@ publish-unstable:
|
||||||
- dput lrde *.changes
|
- dput lrde *.changes
|
||||||
- curl -X POST -F ref=master -F token=$TRIGGER_SPOT_WEB -F "variables[spot_branch]=next" https://gitlab.lrde.epita.fr/api/v4/projects/131/trigger/pipeline
|
- curl -X POST -F ref=master -F token=$TRIGGER_SPOT_WEB -F "variables[spot_branch]=next" https://gitlab.lrde.epita.fr/api/v4/projects/131/trigger/pipeline
|
||||||
- curl -X POST -F ref=master -F token=$TRIGGER_SANDBOX https://gitlab.lrde.epita.fr/api/v4/projects/181/trigger/pipeline
|
- curl -X POST -F ref=master -F token=$TRIGGER_SANDBOX https://gitlab.lrde.epita.fr/api/v4/projects/181/trigger/pipeline
|
||||||
|
|
||||||
|
raspbian:
|
||||||
|
stage: build
|
||||||
|
tags:
|
||||||
|
- armv7
|
||||||
|
script:
|
||||||
|
- autoreconf -vfi
|
||||||
|
- ./configure
|
||||||
|
- make
|
||||||
|
- make distcheck || { chmod -R u+w ./spot-*; false; }
|
||||||
|
artifacts:
|
||||||
|
when: always
|
||||||
|
paths:
|
||||||
|
- ./spot-*/_build/sub/tests/*/*.log
|
||||||
|
- ./*.log
|
||||||
|
- ./*.tar.gz
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// -*- coding: utf-8 -*-
|
// -*- coding: utf-8 -*-
|
||||||
// Copyright (C) 2013-2018 Laboratoire de Recherche et Développement
|
// Copyright (C) 2013-2019 Laboratoire de Recherche et Développement
|
||||||
// de l'Epita (LRDE).
|
// de l'Epita (LRDE).
|
||||||
//
|
//
|
||||||
// This file is part of Spot, a model checking library.
|
// This file is part of Spot, a model checking library.
|
||||||
|
|
@ -416,13 +416,6 @@ namespace spot
|
||||||
return size_;
|
return size_;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Return the bit-vector at \a index.
|
|
||||||
bitvect& at(const size_t index)
|
|
||||||
{
|
|
||||||
SPOT_ASSERT(index < size_);
|
|
||||||
return *reinterpret_cast<bitvect*>(storage() + index * bvsize_);
|
|
||||||
}
|
|
||||||
|
|
||||||
void clear_all()
|
void clear_all()
|
||||||
{
|
{
|
||||||
// FIXME: This could be changed into a large memset if the
|
// FIXME: This could be changed into a large memset if the
|
||||||
|
|
@ -431,11 +424,23 @@ namespace spot
|
||||||
at(s).clear_all();
|
at(s).clear_all();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Return the bit-vector at \a index.
|
||||||
|
bitvect& at(const size_t index)
|
||||||
|
{
|
||||||
|
SPOT_ASSERT(index < size_);
|
||||||
|
// The double cast is to prevent -Wcast-align diagnostics
|
||||||
|
// about the fact that char* (the type of storage) has a
|
||||||
|
// smaller required alignment than bitvect*.
|
||||||
|
auto v = static_cast<void*>(storage() + index * bvsize_);
|
||||||
|
return *static_cast<bitvect*>(v);
|
||||||
|
}
|
||||||
|
|
||||||
/// Return the bit-vector at \a index.
|
/// Return the bit-vector at \a index.
|
||||||
const bitvect& at(const size_t index) const
|
const bitvect& at(const size_t index) const
|
||||||
{
|
{
|
||||||
SPOT_ASSERT(index < size_);
|
SPOT_ASSERT(index < size_);
|
||||||
return *reinterpret_cast<const bitvect*>(storage() + index * bvsize_);
|
auto v = static_cast<const void*>(storage() + index * bvsize_);
|
||||||
|
return *static_cast<const bitvect*>(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
friend SPOT_API bitvect_array* make_bitvect_array(size_t bitcount,
|
friend SPOT_API bitvect_array* make_bitvect_array(size_t bitcount,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// -*- coding: utf-8 -*-
|
// -*- coding: utf-8 -*-
|
||||||
// Copyright (C) 2009, 2012, 2014, 2015, 2018 Laboratoire de Recherche
|
// Copyright (C) 2009, 2012, 2014, 2015, 2018, 2019 Laboratoire de
|
||||||
// et Développement de l'Epita (LRDE).
|
// Recherche et Développement de l'Epita (LRDE).
|
||||||
// Copyright (C) 2003, 2004 Laboratoire d'Informatique de Paris 6
|
// Copyright (C) 2003, 2004 Laboratoire d'Informatique de Paris 6
|
||||||
// (LIP6), département Systèmes Répartis Coopératifs (SRC), Université
|
// (LIP6), département Systèmes Répartis Coopératifs (SRC), Université
|
||||||
// Pierre et Marie Curie.
|
// Pierre et Marie Curie.
|
||||||
|
|
@ -81,7 +81,7 @@ namespace spot
|
||||||
|
|
||||||
static std::ostream* where;
|
static std::ostream* where;
|
||||||
static void
|
static void
|
||||||
print_sat_handler(char* varset, int size)
|
print_sat_handler(signed char* varset, int size)
|
||||||
{
|
{
|
||||||
bool not_first = false;
|
bool not_first = false;
|
||||||
for (int v = 0; v < size; ++v)
|
for (int v = 0; v < size; ++v)
|
||||||
|
|
@ -111,7 +111,7 @@ namespace spot
|
||||||
|
|
||||||
static bool first_done = false;
|
static bool first_done = false;
|
||||||
static void
|
static void
|
||||||
print_accset_handler(char* varset, int size)
|
print_accset_handler(signed char* varset, int size)
|
||||||
{
|
{
|
||||||
for (int v = 0; v < size; ++v)
|
for (int v = 0; v < size; ++v)
|
||||||
if (varset[v] > 0)
|
if (varset[v] > 0)
|
||||||
|
|
|
||||||
|
|
@ -125,7 +125,10 @@ namespace spot
|
||||||
/// \brief An implementation of the Couvreur99 emptiness-check algorithm.
|
/// \brief An implementation of the Couvreur99 emptiness-check algorithm.
|
||||||
///
|
///
|
||||||
/// See the documentation for spot::couvreur99.
|
/// See the documentation for spot::couvreur99.
|
||||||
class SPOT_API couvreur99_check: public emptiness_check, public ec_statistics
|
class SPOT_API couvreur99_check:
|
||||||
|
// We inherit from ec_statistics first to work around GCC bug #90309.
|
||||||
|
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90309#c6
|
||||||
|
public ec_statistics, public emptiness_check
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
couvreur99_check(const const_twa_ptr& a, option_map o = option_map());
|
couvreur99_check(const const_twa_ptr& a, option_map o = option_map());
|
||||||
|
|
@ -160,6 +163,7 @@ namespace spot
|
||||||
bool poprem_;
|
bool poprem_;
|
||||||
/// Number of dead SCC removed by the algorithm.
|
/// Number of dead SCC removed by the algorithm.
|
||||||
unsigned removed_components;
|
unsigned removed_components;
|
||||||
|
|
||||||
unsigned get_removed_components() const;
|
unsigned get_removed_components() const;
|
||||||
unsigned get_vmsize() const;
|
unsigned get_vmsize() const;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue