Commit 1a4569b4 authored by Leif Walsh's avatar Leif Walsh

fix or suppress errors due to -Wmaybe-uninitialized in GCC 4.8

closes #13
parent 9611670e
...@@ -783,7 +783,8 @@ move_leafentries( ...@@ -783,7 +783,8 @@ move_leafentries(
*num_bytes_moved = 0; *num_bytes_moved = 0;
for (i = lbi; i < ube; i++) { for (i = lbi; i < ube; i++) {
OMTVALUE lev; OMTVALUE lev;
toku_omt_fetch(src_bn->buffer, i, &lev); int r = toku_omt_fetch(src_bn->buffer, i, &lev);
assert_zero(r);
LEAFENTRY CAST_FROM_VOIDP(curr_le, lev); LEAFENTRY CAST_FROM_VOIDP(curr_le, lev);
size_t le_size = leafentry_memsize(curr_le); size_t le_size = leafentry_memsize(curr_le);
*num_bytes_moved += leafentry_disksize(curr_le); *num_bytes_moved += leafentry_disksize(curr_le);
...@@ -851,7 +852,7 @@ ftleaf_split( ...@@ -851,7 +852,7 @@ ftleaf_split(
} }
FTNODE B; FTNODE B = nullptr;
uint32_t fullhash; uint32_t fullhash;
BLOCKNUM name; BLOCKNUM name;
...@@ -875,6 +876,9 @@ ftleaf_split( ...@@ -875,6 +876,9 @@ ftleaf_split(
&fullhash, &fullhash,
&B &B
); );
// GCC 4.8 seems to get confused and think B is maybe uninitialized at link time.
// TODO(leif): figure out why it thinks this and actually fix it.
invariant_notnull(B);
} }
...@@ -1245,7 +1249,8 @@ merge_leaf_nodes(FTNODE a, FTNODE b) ...@@ -1245,7 +1249,8 @@ merge_leaf_nodes(FTNODE a, FTNODE b)
// fill in pivot for what used to be max of node 'a', if it is needed // fill in pivot for what used to be max of node 'a', if it is needed
if (a_has_tail) { if (a_has_tail) {
OMTVALUE lev; OMTVALUE lev;
toku_omt_fetch(a_last_buffer, toku_omt_size(a_last_buffer) - 1, &lev); int r = toku_omt_fetch(a_last_buffer, toku_omt_size(a_last_buffer) - 1, &lev);
assert_zero(r);
LEAFENTRY CAST_FROM_VOIDP(le, lev); LEAFENTRY CAST_FROM_VOIDP(le, lev);
uint32_t keylen; uint32_t keylen;
void *key = le_key_and_len(le, &keylen); void *key = le_key_and_len(le, &keylen);
......
...@@ -4050,13 +4050,14 @@ ft_cursor_extract_key_and_val(LEAFENTRY le, ...@@ -4050,13 +4050,14 @@ ft_cursor_extract_key_and_val(LEAFENTRY le,
*val = le; *val = le;
*vallen = leafentry_memsize(le); *vallen = leafentry_memsize(le);
} else if (cursor->is_snapshot_read) { } else if (cursor->is_snapshot_read) {
le_iterate_val( int r = le_iterate_val(
le, le,
does_txn_read_entry, does_txn_read_entry,
val, val,
vallen, vallen,
cursor->ttxn cursor->ttxn
); );
lazy_assert_zero(r);
*key = le_key_and_len(le, keylen); *key = le_key_and_len(le, keylen);
} else { } else {
*key = le_key_and_len(le, keylen); *key = le_key_and_len(le, keylen);
......
...@@ -474,7 +474,7 @@ int toku_read_ft_and_store_in_cachefile (FT_HANDLE brt, CACHEFILE cf, LSN max_ac ...@@ -474,7 +474,7 @@ int toku_read_ft_and_store_in_cachefile (FT_HANDLE brt, CACHEFILE cf, LSN max_ac
} }
} }
*was_open = false; *was_open = false;
FT h; FT h = nullptr;
int r; int r;
{ {
int fd = toku_cachefile_get_fd(cf); int fd = toku_cachefile_get_fd(cf);
...@@ -485,6 +485,8 @@ int toku_read_ft_and_store_in_cachefile (FT_HANDLE brt, CACHEFILE cf, LSN max_ac ...@@ -485,6 +485,8 @@ int toku_read_ft_and_store_in_cachefile (FT_HANDLE brt, CACHEFILE cf, LSN max_ac
} }
} }
if (r!=0) return r; if (r!=0) return r;
// GCC 4.8 seems to get confused by the gotos in the deserialize code and think h is maybe uninitialized.
invariant_notnull(h);
h->cf = cf; h->cf = cf;
h->compare_fun = brt->options.compare_fun; h->compare_fun = brt->options.compare_fun;
h->update_fun = brt->options.update_fun; h->update_fun = brt->options.update_fun;
......
...@@ -1014,8 +1014,9 @@ int toku_fread_TXNID (FILE *f, TXNID *txnid, struct x1764 *checksum, uint32_t ...@@ -1014,8 +1014,9 @@ int toku_fread_TXNID (FILE *f, TXNID *txnid, struct x1764 *checksum, uint32_t
int toku_fread_TXNID_PAIR (FILE *f, TXNID_PAIR *txnid, struct x1764 *checksum, uint32_t *len) { int toku_fread_TXNID_PAIR (FILE *f, TXNID_PAIR *txnid, struct x1764 *checksum, uint32_t *len) {
TXNID parent; TXNID parent;
TXNID child; TXNID child;
toku_fread_TXNID(f, &parent, checksum, len); int r;
toku_fread_TXNID(f, &child, checksum, len); r = toku_fread_TXNID(f, &parent, checksum, len); if (r != 0) { return r; }
r = toku_fread_TXNID(f, &child, checksum, len); if (r != 0) { return r; }
txnid->parent_id64 = parent; txnid->parent_id64 = parent;
txnid->child_id64 = child; txnid->child_id64 = child;
return 0; return 0;
......
...@@ -8,6 +8,15 @@ if(BUILD_TESTING) ...@@ -8,6 +8,15 @@ if(BUILD_TESTING)
file(GLOB srcs RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" *.cc) file(GLOB srcs RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" *.cc)
foreach(src ${srcs})
get_filename_component(test ${src} NAME_WE)
add_executable(${test} ${test})
target_link_libraries(${test} ${LIBTOKUPORTABILITY})
set_target_properties(${test} PROPERTIES POSITION_INDEPENDENT_CODE ON)
add_space_separated_property(TARGET ${test} COMPILE_FLAGS -fvisibility=hidden)
list(APPEND tests ${test})
endforeach(src)
include(CheckCCompilerFlag) include(CheckCCompilerFlag)
check_c_compiler_flag(-Wno-unused-result HAVE_WNO_UNUSED_RESULT) check_c_compiler_flag(-Wno-unused-result HAVE_WNO_UNUSED_RESULT)
if (HAVE_WNO_UNUSED_RESULT) if (HAVE_WNO_UNUSED_RESULT)
...@@ -16,17 +25,9 @@ if(BUILD_TESTING) ...@@ -16,17 +25,9 @@ if(BUILD_TESTING)
check_c_compiler_flag(-Wno-maybe-uninitialized HAVE_WNO_MAYBE_UNINITIALIZED) check_c_compiler_flag(-Wno-maybe-uninitialized HAVE_WNO_MAYBE_UNINITIALIZED)
if (HAVE_WNO_MAYBE_UNINITIALIZED) if (HAVE_WNO_MAYBE_UNINITIALIZED)
add_space_separated_property(SOURCE try-uninit COMPILE_FLAGS -Wno-maybe-uninitialized) add_space_separated_property(SOURCE try-uninit COMPILE_FLAGS -Wno-maybe-uninitialized)
add_space_separated_property(TARGET try-uninit LINK_FLAGS -Wno-maybe-uninitialized)
endif () endif ()
foreach(src ${srcs})
get_filename_component(test ${src} NAME_WE)
add_executable(${test} ${test})
target_link_libraries(${test} ${LIBTOKUPORTABILITY})
set_target_properties(${test} PROPERTIES POSITION_INDEPENDENT_CODE ON)
add_space_separated_property(TARGET ${test} COMPILE_FLAGS -fvisibility=hidden)
list(APPEND tests ${test})
endforeach(src)
configure_file(ensure_memcheck_fails.sh . COPYONLY) configure_file(ensure_memcheck_fails.sh . COPYONLY)
foreach(test try-leak-lost try-leak-reachable try-uninit) foreach(test try-leak-lost try-leak-reachable try-uninit)
list(REMOVE_ITEM tests ${test}) list(REMOVE_ITEM tests ${test})
......
...@@ -151,6 +151,9 @@ test_cursor_sticky (int n, int dup_mode) { ...@@ -151,6 +151,9 @@ test_cursor_sticky (int n, int dup_mode) {
DBC *cursor; DBC *cursor;
r = db->cursor(db, 0, &cursor, 0); assert(r == 0); r = db->cursor(db, 0, &cursor, 0); assert(r == 0);
for (i=0; i<n; i++) { for (i=0; i<n; i++) {
// GCC 4.8 complains about these being maybe uninitialized.
// TODO(leif): figure out why and fix it.
k = 0; v = 0;
r = cursor_get(cursor, &k, &v, DB_NEXT); assert(r == 0); r = cursor_get(cursor, &k, &v, DB_NEXT); assert(r == 0);
assert(k == htonl(i)); assert(v == htonl(i)); assert(k == htonl(i)); assert(v == htonl(i));
} }
......
...@@ -358,8 +358,10 @@ test_txn_nested_jumble (int iteration) { ...@@ -358,8 +358,10 @@ test_txn_nested_jumble (int iteration) {
if (min_allowed_branch_level >= nest_level) { if (min_allowed_branch_level >= nest_level) {
//start new subtree //start new subtree
int max = nest_level + 4; int max = nest_level + 4;
if (MAX_NEST - 1 < max) max = MAX_NEST - 1; if (MAX_NEST - 1 < max) {
assert(max > nest_level); max = MAX_NEST - 1;
assert(max > nest_level);
}
int branch_level; int branch_level;
for (branch_level = nest_level + 1; branch_level <= max; branch_level++) { for (branch_level = nest_level + 1; branch_level <= max; branch_level++) {
start_txn_and_maybe_insert_or_delete(branch_level); start_txn_and_maybe_insert_or_delete(branch_level);
......
...@@ -377,8 +377,10 @@ test_txn_nested_jumble (int iteration) { ...@@ -377,8 +377,10 @@ test_txn_nested_jumble (int iteration) {
if (min_allowed_branch_level >= nest_level) { if (min_allowed_branch_level >= nest_level) {
//start new subtree //start new subtree
int max = nest_level + 4; int max = nest_level + 4;
if (MAX_NEST - 1 < max) max = MAX_NEST - 1; if (MAX_NEST - 1 < max) {
assert(max > nest_level); max = MAX_NEST - 1;
assert(max > nest_level);
}
int branch_level; int branch_level;
for (branch_level = nest_level + 1; branch_level <= max; branch_level++) { for (branch_level = nest_level + 1; branch_level <= max; branch_level++) {
start_txn_and_maybe_insert_or_delete(branch_level); start_txn_and_maybe_insert_or_delete(branch_level);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment