Fixes #13759
Also inverts the help (so it shows --disable-asm like other enabled-by-default options, and initialises the flag variables.
makes sense, utACK 4207c1b35c2e2ee1c9217cc7db3290a24c3b4b52
utACK 4207c1b35c2e2ee1c9217cc7db3290a24c3b4b52
ACK 4207c1b35c2e2ee1c9217cc7db3290a24c3b4b52
The variables enable_hwcrc, enable_sse41, enable_avx2, and enable_shani do not control inclusion of assembly code, but C++ with intrinsics. See my comment here: #13759 (comment).
Overall my preference would be to remove that compilation flag, as I don't know under what conditions I'd suggest someone disable it.
do not control inclusion of assembly code, but C++ with intrinsic
I think many people interpret asm as "special instructions", independent of whether these are emitted though inline assembly or intrinsics.
as I don't know under what conditions I'd suggest someone disable it.
Also not sure on this. Clearly they should be disabled if the compiler doesn't know the intrinsics, but that is already done automatically.
Removing 0.17.0 milestone
Overall my preference would be to remove that compilation flag, as I don't know under what conditions I'd suggest someone disable it.
Recently there was someone with an edge case in the IRC channel with regard to assembly, where they needed to disable it to build. So I think it would be a bad idea to remove it.
Edit: ah this was @MarcoFalke:
2018-11-19 17:05:41 MarcoFalke Anyone has an idea how to disable compilation of this: crypto/sha256_sse4.cpp:44:9: error: unknown token in expression
2018-11-19 17:05:46 MarcoFalke "shl $0x6,%2;"
2018-11-19 17:06:51 wumpus MarcoFalke: --disable-asm?
2018-11-19 17:06:54 gmaxwell MarcoFalke: there is a configure option to disable asm
2018-11-19 17:07:09 gmaxwell lol wumpus' answer was faster an more informative.
2018-11-19 17:07:17 MarcoFalke I thought it excluded those files, but let me try
2018-11-19 17:07:40 wumpus although, ideally it *should* detect lack of support for assembly in the compiler in autoconf and do that automatically
2018-11-19 17:08:21 wumpus there's even been talk of removing disable-asm but I think edge cases such as this make it useful to keep
2018-11-19 17:23:03 MarcoFalke wumpus: gmaxwell: Thanks, that worked.
2018-11-19 17:23:54 gmaxwell What strange compiler are you using where it cant compile crypto/sha256_sse4.cpp ?
2018-11-19 17:24:38 MarcoFalke xenial on travis
2018-11-19 17:24:47 MarcoFalke gcc5.something that is
2018-11-19 17:25:33 gmaxwell I wonder if trais has done something weird, becuase that code should compile fine with gcc5.
2018-11-19 17:26:50 MarcoFalke Its odd, I thought they used gce for the sudo-vms, but it would compile sse41.cpp on gce for me
@luke-jr Is this still relevant after the recent discussion?
Maybe would make sense to discuss this at the IRC meeting
Concept ACK
Please don't remove --disable-asm -- I often find the need for it when working with "non-vanilla compilation setups" such as when trying out research prototypes/research compiler extensions. A recent example was this EffectiveSan case https://github.com/GJDuck/EffectiveSan/issues/2#issuecomment-454262478 where --disable-asm was needed.
More about EffectiveSan:
Please don't remove --disable-asm -- I often find the need for it when working with "non-vanilla compilation setups" such as when trying out research prototypes/research compiler extensions.
So does anyone agree with my idea of how disable-asm should be interpreted? It would, in your context, be the expected behavior too I think.
I think many people interpret asm as "special instructions", independent of whether these are emitted though inline assembly or intrinsics.
I think many people interpret asm as "special instructions", independent of whether these are emitted though inline assembly or intrinsics. @laanwj Yes, agreed!
Yes, that's the intent of this change.
<!--a722867cd34abeea1fadc8d60700f111-->
Gitian builds for commit a238fccce84bcd5544e88bdc37bf5b9b387d2164 (master):
7995af47876bf2c2a3599ed6c270ad5d... bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz1a0d18c47a5258f98149417693e44c60... bitcoin-0.18.99-aarch64-linux-gnu.tar.gz2708654e0781f7a508513d1867483a42... bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz60c74abf1d7b5b5cf927ea9e22565a20... bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz62a1d276aa3b2e96faa4b671a9d820e1... bitcoin-0.18.99-i686-pc-linux-gnu-debug.tar.gzd20abe590b7d5ba794086165fd163d4f... bitcoin-0.18.99-i686-pc-linux-gnu.tar.gz2e16a9bf4a0201487febbfbafd4f2f9e... bitcoin-0.18.99-osx-unsigned.dmgeb5431924271dce18e11f8e1b61c39f6... bitcoin-0.18.99-osx64.tar.gz4fcff0aa8df10460db362d7b988b866a... bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gzbddb3f73d0bae0b8238f273e45cece89... bitcoin-0.18.99-riscv64-linux-gnu.tar.gzbacf13be654859b223dc06973109605a... bitcoin-0.18.99-win32-debug.zipcb1aa2eaf7b5403bfc1a8e4af45f3432... bitcoin-0.18.99-win32-setup-unsigned.exe475c5f8ffb1d7790eb16ba8a57ef31e6... bitcoin-0.18.99-win32.zip8db1ac35805a8774860b775aee58e261... bitcoin-0.18.99-win64-debug.zip5b7f42707b81c2208463717dff648cf0... bitcoin-0.18.99-win64-setup-unsigned.exef4aa0d43034d4a2626f4caea5c528f64... bitcoin-0.18.99-win64.zipdbb2807e4f2a8e17e156226057bae35c... bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz94be65f5874eb7250a8970b43650329b... bitcoin-0.18.99-x86_64-linux-gnu.tar.gz0c02ff21551c8eddd7c0a1d179015b57... bitcoin-0.18.99.tar.gzf9d349ffeaec1390d81a8d276221607d... bitcoin-core-linux-0.19-res.ymld6b42db8e5dac5c5ac020bed94ff0056... bitcoin-core-osx-0.19-res.ymlbf611e85b06a4222b8f2caeb61b93d49... bitcoin-core-win-0.19-res.yml138d2e410d38c654ea3334a7cc1a2e7a... bitcoin-linux-build.log9240aad886c226fd8dabb1050fa26439... bitcoin-osx-build.logd641e8c06d839f86c9b36cc72e7cbd45... bitcoin-win-build.logGitian builds for commit c208fb7225e2389d2abd87ae172d55dcf76009ce (master and this pull):
7cb824773391770755056b7f4af01366... bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz73d85402fdf7140e542a33274ec84331... bitcoin-0.18.99-aarch64-linux-gnu.tar.gz64e04c1ff079ee5b3a74cadc3e9cb347... bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz585554ff236951b35a9a8e85e88911f4... bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz27cf96b6185d6124463b328a8fc60303... bitcoin-0.18.99-i686-pc-linux-gnu-debug.tar.gz9f9c0a636fec5b1a13d1db27d235b352... bitcoin-0.18.99-i686-pc-linux-gnu.tar.gz2eef882ea2ccd9c8fbf4f24281d77f48... bitcoin-0.18.99-osx-unsigned.dmge9d7a5a35b109d26a90f6a7f4a20cd08... bitcoin-0.18.99-osx64.tar.gz62d8aef655147f5ec4c6b93658ba0bbe... bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gze58643814f1cc090ac99a1ee4a2ea7c9... bitcoin-0.18.99-riscv64-linux-gnu.tar.gz5e06ff37a593c67b6d597fb4733455dd... bitcoin-0.18.99-win32-debug.zipc1997b7e205300d0cc1701eb974908c9... bitcoin-0.18.99-win32-setup-unsigned.execd32f842383a269df106c54cdc005aa8... bitcoin-0.18.99-win32.zip2691e86757bb8625f2bbbe8c5b3b5c1d... bitcoin-0.18.99-win64-debug.zip2f2ebb742d27d5755ac1af6aa3d5400c... bitcoin-0.18.99-win64-setup-unsigned.exe57d75f8a1164bed4199c479f684f783f... bitcoin-0.18.99-win64.zipa7d4d74ff6da38e5c0056f58e6372678... bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gzabf5e83c7e260ae30f0420fa74021231... bitcoin-0.18.99-x86_64-linux-gnu.tar.gz101528b0022ad0ad5be8109b8e101fe7... bitcoin-0.18.99.tar.gz87f4664cb0b1d2b8339f70afd92b6136... bitcoin-core-linux-0.19-res.yml5b78e02ef92f17484533c7dfeebb443a... bitcoin-core-osx-0.19-res.ymle89da3d6375c8d1cf303156a8af14134... bitcoin-core-win-0.19-res.ymlf9aac63ad41b345143095dadfb5b343c... bitcoin-linux-build.log495d28f7085d0be228f19d18d0f15ac6... bitcoin-osx-build.log5ec5b859fb7a2342fc94faa02b47f878... bitcoin-win-build.logIf the goal is appeasing platforms where autodetection or these optimizations fail for some other reason, it makes sense to have the option include the intrinsics.
I don't care too strongly about the naming.
tACK 4207c1b35c2e2ee1c9217cc7db3290a24c3b4b52
Now at two ACKs and two utACK:s -- perhaps ready for merge?
That would help me since I frequently find the need for a --disable-asm working the way this PR makes it do. Currently I have to emulate this behaviour by manually patching configure.ac :-)