aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/utils.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2020-05-08 09:33:55 +0200
committerJakub Jelinek <jakub@redhat.com>2020-05-08 09:33:55 +0200
commitdf569f7da567af4996821dc0a1871eec79957d04 (patch)
treecc4ced8f3fc3149413fca20171fb9bedf899abed /gcc/ada/gcc-interface/utils.c
parentff33680165346cb291667f38dd2e9f25a74cc3c3 (diff)
downloadgcc-df569f7da567af4996821dc0a1871eec79957d04.zip
gcc-df569f7da567af4996821dc0a1871eec79957d04.tar.gz
gcc-df569f7da567af4996821dc0a1871eec79957d04.tar.bz2
match.pd: Optimize ffs of known non-zero arg into ctz + 1 [PR94956]
The ffs expanders on several targets (x86, ia64, aarch64 at least) emit a conditional move or similar code to handle the case when the argument is 0, which makes the code longer. If we know from VRP that the argument will not be zero, we can (if the target has also an ctz expander) just use ctz which is undefined at zero and thus the expander doesn't need to deal with that. 2020-05-08 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/94956 * match.pd (FFS): Optimize __builtin_ffs* of non-zero argument into __builtin_ctz* + 1 if direct IFN_CTZ is supported. * gcc.target/i386/pr94956.c: New test.
Diffstat (limited to 'gcc/ada/gcc-interface/utils.c')
0 files changed, 0 insertions, 0 deletions