aboutsummaryrefslogtreecommitdiff
path: root/gcc/lra-constraints.c
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2019-03-15 23:09:15 +0100
committerSegher Boessenkool <segher@gcc.gnu.org>2019-03-15 23:09:15 +0100
commit850b8aa3091a2c62200bde93fc61101e4dec45b6 (patch)
tree6f2bcf43a0baaf2389f316018cdd8a154739f785 /gcc/lra-constraints.c
parent30bb0e44d3893b27c6cd74c72a077e5a0d96a244 (diff)
downloadgcc-850b8aa3091a2c62200bde93fc61101e4dec45b6.zip
gcc-850b8aa3091a2c62200bde93fc61101e4dec45b6.tar.gz
gcc-850b8aa3091a2c62200bde93fc61101e4dec45b6.tar.bz2
LRA: side_effects_p stmts' output is not invariant (PR89721)
PR89721 shows LRA treating an unspec_volatile's result as invariant, which of course isn't correct. This patch fixes it. PR rtl-optimization/89721 * lra-constraints (invariant_p): Return false if side_effects_p holds. From-SVN: r269716
Diffstat (limited to 'gcc/lra-constraints.c')
-rw-r--r--gcc/lra-constraints.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
index d7d69c6..ccca130 100644
--- a/gcc/lra-constraints.c
+++ b/gcc/lra-constraints.c
@@ -5839,6 +5839,9 @@ invariant_p (const_rtx x)
enum rtx_code code;
int i, j;
+ if (side_effects_p (x))
+ return false;
+
code = GET_CODE (x);
mode = GET_MODE (x);
if (code == SUBREG)