< bitdroid> sup
< bitdroid> does bitcoin core have a android app?
< achow101> bitdroid: no
< bitcoin-git> [bitcoin] NicolasDorier opened pull request #10216: [Wallet] FundRawTransaction can accept pre-set inputs whose parent is not yet broadcasted (master...fundrawtransaction2) https://github.com/bitcoin/bitcoin/pull/10216
<@wumpus> "Clang doesn't complain when passing in -msse4.2 on ARM-based systems." gah, thanks clang
< gmaxwell> lol
< gmaxwell> I guess just wrap the code with the relevant ifdef __x86something__ so arm sees an empty file? :P
<@wumpus> found a bug in leveldb's sse4.2 crc32c detection, let's not make the same mistake in our own build system when we port that over
<@wumpus> yep, instead of just compiling a c program with -msse4.2, the detection now compiles a c program with #ifdef __SSE4_2_ #error ... #endif
< cfields> sigh
< cfields> and I thought I was ahead of that one :(
< cfields> wumpus: any chance it warns at least? based on the report I assume not.
<@wumpus> thinking of it, it might be more robust to try to insert an actual sse4.2 instruction, instead of the ifdef
<@wumpus> cfields: I don't think so (but can't try at the moment)
< cfields> but for clang, it sounds like anything pre-processesed could still end up with SIGILL :(
< cfields> will refresh my memory and have a look tomorrow.
< gmaxwell> hm? you cannot use -msse4.2 on a file with functions that will be called on a system without it... as the insstructions could end up anywhere.
< gmaxwell> g++ at least has the ability to push the compile flags on a function by function basis and has a linker override, so we could avoid writing the detection ourselves... I dunno if clang supports those extensions yet though.
<@wumpus> gmaxwell: right
< cfields> gmaxwell: leveldb checks at runtime before calling it
< gmaxwell> cfields: 'it'? meaning any file compiled with -msse4.2 ?
<@wumpus> the program needs to check yourself before calling into it, and there should be no global cons/destructors in the file
< cfields> gmaxwell: the object is segregated, yes.
<@wumpus> there should be only one file compiled with msse4.2
<@wumpus> the only place where I could see it potentially go wrong is on whole-program-optimization
<@wumpus> cfields: yep! exactly as it shoudl be
< cfields> wumpus: and the fact that the check itself is compiled with sse4.2 :(
< cfields> i wish that'd broken that out separately
<@wumpus> yea, the check itself must be outside that file
<@wumpus> otherwise it's kind of self-defeating
< cfields> it's not though :(
<@wumpus> unless you use openssl-style detection (catch SIGILL)
<@wumpus> but that's not necessary for intel
<@wumpus> seems that should be an upstream patch then
<@wumpus> gah,clang documentation site is offline
< cfields> wumpus: yea. I suspect it probably always works in practice because the compiler doesn't find any useful sse4.2 optilms to use for the cpuid check. But it always could, and break.
<@wumpus> it could break once the compiler becomes smarter
< cfields> right. upstream patch to break it out 100% would be cleaner. Will do.
<@wumpus> so the clang compiler user's manual... [https://clang.llvm.org/docs/UsersManual.html] mentions some ARM -m flags, but not the X86 ones...
<@wumpus> why is it always so darn hard to find a complete list of compiler flags
< cfields> wtf would it buid with any -msse*? That's really annoying.
< * wumpus> would like to see it try to generate sse4.2 instructions on ARM
< cfields> challenge accepted!
< * cfields> upstreams to arm, rather than leveldb
<@wumpus> uh oh, did you now start working on a arm microcode patch to accept sse4.2 instructions? :p
< cfields> wumpus: yep. But only in my own silicon. You can license the patent for $19.99. But wait, there's more!
<@wumpus> transmeta: the sequel
< cfields> haha
<@wumpus> trying to compile bitcoin core with c++17 clang runs into some curious things: https://github.com/laanwj/bitcoin/commit/7a05ed0835fa962064a9c5198ab568109ab02d85 explicit bool coercion required at some places, as well as ?: needing to be exactly the right type *and* constness
<@wumpus> I don't know enough about the standard to be able to state whether that's a bug in the compiler (as this is still experimental) or makes sense because of the new spec
<@wumpus> luckily we now pass std=c++11 so don't have to worry about it
< jonasschnelli> <*highlight>[22:09:48] <BlueMatt:#bitcoin-core-dev> jonasschnelli: hey
< jonasschnelli> BlueMatt: pong
< BlueMatt> jonasschnelli: hey