diff options
author | Richard Earnshaw <rearnsha@arm.com> | 2018-07-31 17:36:09 +0000 |
---|---|---|
committer | Richard Earnshaw <rearnsha@gcc.gnu.org> | 2018-07-31 17:36:09 +0000 |
commit | 6e1eaca96f745be9d40672c29cd2355c8b17b674 (patch) | |
tree | 811af2ddcf0c35222ede963ae5fde1ef227a2407 /gcc/cfgexpand.c | |
parent | 3b0c25022ec92d117d4ff6d7e11fdfb5327eff0e (diff) | |
download | gcc-6e1eaca96f745be9d40672c29cd2355c8b17b674.zip gcc-6e1eaca96f745be9d40672c29cd2355c8b17b674.tar.gz gcc-6e1eaca96f745be9d40672c29cd2355c8b17b674.tar.bz2 |
AArch64 - disable CB[N]Z TB[N]Z when tracking speculation
The CB[N]Z and TB[N]Z instructions do not expose the comparison through
the condition code flags. This makes it impossible to track speculative
execution through such a branch. We can handle this relatively easily
by simply disabling the patterns in this case.
A side effect of this is that the split patterns for the atomic operations
need to also avoid generating these instructions. They mostly have simple
fall-backs for this already.
* config/aarch64/aarch64.md (cb<optab><mode>1): Disable when
aarch64_track_speculation is true.
(tb<optab><mode>1): Likewise.
* config/aarch64/aarch64.c (aarch64_split_compare_regs): Do not
generate CB[N]Z when tracking speculation.
(aarch64_split_compare_and_swap): Likewise.
(aarch64_split_atomic_op): Likewise.
From-SVN: r263172
Diffstat (limited to 'gcc/cfgexpand.c')
0 files changed, 0 insertions, 0 deletions