summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt4
-rw-r--r--include/shard/ISAMTree.h6
2 files changed, 8 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5f77396..be0fb15 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,7 +6,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED True)
set(namespace "de")
project("Practical Dynamic Extension" VERSION 0.1.0)
-set(debug true)
+set(debug false)
set(tests True)
set(bench true)
set(old_bench False)
@@ -25,7 +25,7 @@ if (debug)
add_compile_options(-fsanitize=undefined)
add_link_options(-fsanitize=undefined)
else()
- add_compile_options(-g -O3)
+ add_compile_options(-O3)
endif()
# Test build instructions
diff --git a/include/shard/ISAMTree.h b/include/shard/ISAMTree.h
index 33ba82f..9458b1f 100644
--- a/include/shard/ISAMTree.h
+++ b/include/shard/ISAMTree.h
@@ -65,6 +65,12 @@ public:
sizeof(Wrapped<R>),
(byte**) &m_data);
+ /*
+ * without this, gcc seems to hoist the building of the array
+ * _above_ its allocation under -O3, resulting in memfaults.
+ */
+ asm volatile ("" ::: "memory");
+
auto res = sorted_array_from_bufferview(std::move(buffer), m_data, m_bf);
m_reccnt = res.record_count;
m_tombstone_cnt = res.tombstone_count;