On 24/10/2016 12:51, Peter Maydell wrote: > On 22 October 2016 at 22:04, Richard Henderson <r...@twiddle.net> wrote: >> This is v7, with the additional fix for gcc 4.2, as on Centos 6. >> >> >> r~ >> >> >> The following changes since commit da158a86c407fa7b9da848b571356a26809d8df9: >> >> Merge remote-tracking branch >> 'remotes/berrange/tags/pull-qcrypto-2016-10-20-1' into staging (2016-10-20 >> 14:46:19 +0100) >> >> are available in the git repository at: >> >> git://github.com/rth7680/qemu.git tags/pull-atomic-20161022 >> >> for you to fetch changes up to 278c5beb29ef8b6747a7c9bde403e9fe90cdad9c: >> >> target-alpha: Emulate LL/SC using cmpxchg helpers (2016-10-20 11:00:46 >> -0700) >> >> ---------------------------------------------------------------- >> cmpxchg atomic operations >> >> ---------------------------------------------------------------- > > This fails to build with clang (OSX and linux): > > /Users/pm215/src/qemu-for-merges/target-arm/translate.c:1019:1: error: > unused function 'gen_aa32_ld16ua > ' [-Werror,-Wunused-function] > DO_GEN_LD(16ua, MO_UW | MO_ALIGN) > ^ > /Users/pm215/src/qemu-for-merges/target-arm/translate.c:954:20: note: > expanded from macro 'DO_GEN_LD' > static inline void gen_aa32_ld##SUFF(DisasContext *s, TCGv_i32 val, \ > ^ > <scratch space>:130:1: note: expanded from here > gen_aa32_ld16ua > ^ > /Users/pm215/src/qemu-for-merges/target-arm/translate.c:1020:1: error: > unused function 'gen_aa32_ld32ua > ' [-Werror,-Wunused-function] > DO_GEN_LD(32ua, MO_UL | MO_ALIGN) > ^ > /Users/pm215/src/qemu-for-merges/target-arm/translate.c:954:20: note: > expanded from macro 'DO_GEN_LD' > static inline void gen_aa32_ld##SUFF(DisasContext *s, TCGv_i32 val, \ > ^ > <scratch space>:131:1: note: expanded from here > gen_aa32_ld32ua > ^ > > The other builds passed OK.
LLVM bug https://llvm.org/bugs/show_bug.cgi?id=22712: we should probably consider the functions to not be in the main source file if they were expanded from a macro that was defined outside that file. That perhaps doesn't go far enough (consider a macro defined in the main source file, that produces several functions, where after each macro invocation only a subset of the functions is used) Paolo