summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2020-03-19 07:52:35 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2020-03-19 15:09:13 +0200
commita66eebf57c212363f9f430a4c8c9a4f3ddf57cfb (patch)
tree0c7e48ae2bed8f3dbba1b43eee786f045f4ee2cd /sql
parent6960e9ed24dbdab587730cdceab1f29bcdd6d52a (diff)
downloadmariadb-git-a66eebf57c212363f9f430a4c8c9a4f3ddf57cfb.tar.gz
MDEV-21981 Replace arithmetic + with bitwise OR when possible
Several macros such as sint2korr() and uint4korr() are using the arithmetic + operator while a bitwise or operator would suffice. GCC 5 and clang 5 and later can detect patterns consisting of bitwise or and shifts by multiples of 8 bits, such as those used in the InnoDB function mach_read_from_4(). They actually translate that verbose low-level code into high-level machine language (i486 bswap instruction or fused into the Haswell movbe instruction). We should do the same for MariaDB Server code that is outside InnoDB. Note: The Microsoft C compiler is lacking this optimization. There, we might consider using _byteswap_ushort(), _byteswap_ulong(), _byteswap_uint64(). But, those would lead to unaligned reads, which are bad for reasons stated in MDEV-20277. Besides, outside InnoDB, most data is already being stored in the native little-endian format of that compiler.
Diffstat (limited to 'sql')
0 files changed, 0 insertions, 0 deletions