diff options
author | Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> | 2019-07-13 08:28:33 +0000 |
---|---|---|
committer | Prathamesh Kulkarni <prathamesh3492@gcc.gnu.org> | 2019-07-13 08:28:33 +0000 |
commit | f2b29269c407f10718bc935b3dd5c7e8641b6847 (patch) | |
tree | 899d897fa30b485c9788784d3433c6f2d422e96d /gcc/expr.c | |
parent | 1a888209de88d4a4a1f415beb28e5a94b95e088f (diff) | |
download | gcc-f2b29269c407f10718bc935b3dd5c7e8641b6847.zip gcc-f2b29269c407f10718bc935b3dd5c7e8641b6847.tar.gz gcc-f2b29269c407f10718bc935b3dd5c7e8641b6847.tar.bz2 |
re PR target/90723 (pr88598-2.c segfaults with -msve-vector-bits=256)
2019-07-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
PR target/90723
* recog.h (temporary_volatile_ok): New class.
* config/aarch64/aarch64.c (aarch64_emit_sve_pred_move): Set
volatile_ok temporarily to true using temporary_volatile_ok.
* expr.c (emit_block_move_via_cpymem): Likewise.
* optabs.c (maybe_legitimize_operand): Likewise.
From-SVN: r273466
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 10 |
1 files changed, 2 insertions, 8 deletions
@@ -1732,8 +1732,6 @@ emit_block_move_via_cpymem (rtx x, rtx y, rtx size, unsigned int align, unsigned HOST_WIDE_INT max_size, unsigned HOST_WIDE_INT probable_max_size) { - int save_volatile_ok = volatile_ok; - if (expected_align < align) expected_align = align; if (expected_size != -1) @@ -1745,7 +1743,7 @@ emit_block_move_via_cpymem (rtx x, rtx y, rtx size, unsigned int align, } /* Since this is a move insn, we don't care about volatility. */ - volatile_ok = 1; + temporary_volatile_ok v (true); /* Try the most limited insn first, because there's no point including more than one in the machine description unless @@ -1809,14 +1807,10 @@ emit_block_move_via_cpymem (rtx x, rtx y, rtx size, unsigned int align, create_fixed_operand (&ops[8], NULL); } if (maybe_expand_insn (code, nops, ops)) - { - volatile_ok = save_volatile_ok; - return true; - } + return true; } } - volatile_ok = save_volatile_ok; return false; } |