aboutsummaryrefslogtreecommitdiff
path: root/gcc/lra-constraints.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2019-03-20 12:26:42 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2019-03-20 12:26:42 +0100
commita5b821e448e6debe73e1154128b4ea6f7f73fbdd (patch)
tree6e4940308ba8d348193ea382c21c257c79a66ab8 /gcc/lra-constraints.c
parent7f129d6f1619d81cac4dd0ac58071442e99466ea (diff)
downloadgcc-a5b821e448e6debe73e1154128b4ea6f7f73fbdd.zip
gcc-a5b821e448e6debe73e1154128b4ea6f7f73fbdd.tar.gz
gcc-a5b821e448e6debe73e1154128b4ea6f7f73fbdd.tar.bz2
re PR target/89752 (ICE in emit_move_insn, at expr.c:3723)
PR target/89752 * lra-constraints.c (process_alt_operands) <reg>: For BLKmode, don't update this_alternative nor this_alternative_set. * g++.target/aarch64/aarch64.exp: New file. * g++.target/aarch64/pr89752.C: New test. From-SVN: r269819
Diffstat (limited to 'gcc/lra-constraints.c')
-rw-r--r--gcc/lra-constraints.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
index ccca130..cba87eb 100644
--- a/gcc/lra-constraints.c
+++ b/gcc/lra-constraints.c
@@ -2350,6 +2350,8 @@ process_alt_operands (int only_alternative)
break;
reg:
+ if (mode == BLKmode)
+ break;
this_alternative = reg_class_subunion[this_alternative][cl];
IOR_HARD_REG_SET (this_alternative_set,
reg_class_contents[cl]);
@@ -2360,8 +2362,6 @@ process_alt_operands (int only_alternative)
IOR_HARD_REG_SET (this_costly_alternative_set,
reg_class_contents[cl]);
}
- if (mode == BLKmode)
- break;
winreg = true;
if (REG_P (op))
{