From c267a71475e566ceabafce9e2f775e03b681bd4c Mon Sep 17 00:00:00 2001 From: Leo Yuriev Date: Wed, 7 Mar 2018 13:31:33 +0300 Subject: [PATCH] mdbx: workaround for "alignment-reduction-ignored" lcc's bug. Change-Id: I000bfaffd78ef7b6e27d6178bc2a5defc32cc357 --- Makefile | 8 ++++++++ src/bits.h | 12 ++++++++++++ 2 files changed, 20 insertions(+) diff --git a/Makefile b/Makefile index 44601a17..c434dbdd 100644 --- a/Makefile +++ b/Makefile @@ -26,6 +26,14 @@ CXX ?= g++ XCFLAGS ?= -DNDEBUG=1 -DMDBX_DEBUG=0 -DLIBMDBX_EXPORTS=1 CFLAGS ?= -O2 -g3 -Wall -Werror -Wextra -ffunction-sections -fPIC -fvisibility=hidden CFLAGS += -D_GNU_SOURCE=1 -std=gnu11 -pthread $(XCFLAGS) + +# temporary workaround for lcc's bug +TARGET_ARCH_e2k = $(shell (export LC_ALL=C; ($(CC) --version 2>&1; $(CC) -v 2>&1) | grep -q -i 'e2k' && echo yes || echo no)) +ifeq ($(TARGET_ARCH_e2k),yes) +TARGET_ARCH := e2k +CFLAGS += -mtune=native -Wno-alignment-reduction-ignored +endif + CXXFLAGS = -std=c++11 $(filter-out -std=gnu11,$(CFLAGS)) TESTDB ?= $(shell [ -d /dev/shm ] && echo /dev/shm || echo /tmp)/mdbx-check.db TESTLOG ?= $(shell [ -d /dev/shm ] && echo /dev/shm || echo /tmp)/mdbx-check.log diff --git a/src/bits.h b/src/bits.h index dcf12ec9..b22167c3 100644 --- a/src/bits.h +++ b/src/bits.h @@ -98,6 +98,18 @@ #endif #endif /* -Wconstant-logical-operand */ +#if __has_warning("-Walignment-reduction-ignored") || defined(__e2k__) || defined(__ICC) +#if defined(__ICC) +#pragma warning(disable: 3453 1366) +#elif defined(__clang__) +#pragma clang diagnostic ignored "-Walignment-reduction-ignored" +#elif defined(__GNUC__) +#pragma GCC diagnostic ignored "-Walignment-reduction-ignored" +#else +#pragma warning disable "alignment-reduction-ignored" +#endif +#endif /* -Wno-constant-logical-operand */ + #include "./osal.h" /* *INDENT-ON* */