Skip to content

Commit cd86eb8

Browse files
authored
Merge pull request #1477 from andreast271/travis-NDEBUG-build
Compile cbmc with NDEBUG using gcc tool chain on linux.
2 parents 821403d + 2177bbc commit cd86eb8

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

.travis.yml

+3-1
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ jobs:
117117
- EXTRA_CXXFLAGS="-DDEBUG"
118118
script: echo "Not running any tests for a debug build."
119119

120-
# Ubuntu Linux with glibc using clang++-3.7
120+
# Ubuntu Linux with glibc using clang++-3.7, no-debug mode
121121
- stage: Test different OS/CXX/Flags
122122
os: linux
123123
sudo: false
@@ -140,6 +140,7 @@ jobs:
140140
env:
141141
- COMPILER="ccache clang++-3.7 -Qunused-arguments -fcolor-diagnostics"
142142
- CCACHE_CPP2=yes
143+
- EXTRA_CXXFLAGS="-DNDEBUG"
143144

144145
# Ubuntu Linux with glibc using clang++-3.7, debug mode
145146
- stage: Test different OS/CXX/Flags
@@ -167,6 +168,7 @@ jobs:
167168
- EXTRA_CXXFLAGS="-DDEBUG"
168169
script: echo "Not running any tests for a debug build."
169170

171+
# cmake build using g++-5
170172
- stage: Test different OS/CXX/Flags
171173
os: linux
172174
cache: ccache

src/util/invariant.h

+7-4
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ class invariant_failedt: public std::logic_error
8383
const std::string &reason);
8484

8585
public:
86-
8786
const std::string file;
8887
const std::string function;
8988
const int line;
@@ -117,20 +116,24 @@ class invariant_failedt: public std::logic_error
117116
#define INVARIANT(CONDITION, REASON) \
118117
__CPROVER_assert((CONDITION), "Invariant : " REASON)
119118

119+
#define INVARIANT_STRUCTURED(CONDITION, TYPENAME, ...) \
120+
INVARIANT(CONDITION, "")
120121

121122
#elif defined(CPROVER_INVARIANT_DO_NOT_CHECK)
122123
// For performance builds, invariants can be ignored
123124
// This is *not* recommended as it can result in unpredictable behaviour
124125
// including silently reporting incorrect results.
125126
// This is also useful for checking side-effect freedom.
126-
#define INVARIANT(CONDITION, REASON, ...) do {} while(0)
127+
#define INVARIANT(CONDITION, REASON) do {} while(0)
128+
#define INVARIANT_STRUCTURED(CONDITION, TYPENAME, ...) do {} while(0)
127129

128130
#elif defined(CPROVER_INVARIANT_ASSERT)
129131
// Not recommended but provided for backwards compatability
130132
#include <cassert>
131133
// NOLINTNEXTLINE(*)
132-
#define INVARIANT(CONDITION, REASON, ...) assert((CONDITION) && ((REASON), true))
133-
134+
#define INVARIANT(CONDITION, REASON) assert((CONDITION) && ((REASON), true))
135+
// NOLINTNEXTLINE(*)
136+
#define INVARIANT_STRUCTURED(CONDITION, TYPENAME, ...) assert((CONDITION))
134137
#else
135138

136139
void print_backtrace(std::ostream &out);

0 commit comments

Comments
 (0)