Commit a5b821e4 by Jakub Jelinek Committed by Jakub Jelinek

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
parent 7f129d6f
2019-03-20 Jakub Jelinek <jakub@redhat.com>
PR target/89752
* lra-constraints.c (process_alt_operands) <reg>: For BLKmode, don't
update this_alternative nor this_alternative_set.
2019-03-19 Jim Wilson <jimw@sifive.com> 2019-03-19 Jim Wilson <jimw@sifive.com>
PR target/89411 PR target/89411
......
...@@ -2350,6 +2350,8 @@ process_alt_operands (int only_alternative) ...@@ -2350,6 +2350,8 @@ process_alt_operands (int only_alternative)
break; break;
reg: reg:
if (mode == BLKmode)
break;
this_alternative = reg_class_subunion[this_alternative][cl]; this_alternative = reg_class_subunion[this_alternative][cl];
IOR_HARD_REG_SET (this_alternative_set, IOR_HARD_REG_SET (this_alternative_set,
reg_class_contents[cl]); reg_class_contents[cl]);
...@@ -2360,8 +2362,6 @@ process_alt_operands (int only_alternative) ...@@ -2360,8 +2362,6 @@ process_alt_operands (int only_alternative)
IOR_HARD_REG_SET (this_costly_alternative_set, IOR_HARD_REG_SET (this_costly_alternative_set,
reg_class_contents[cl]); reg_class_contents[cl]);
} }
if (mode == BLKmode)
break;
winreg = true; winreg = true;
if (REG_P (op)) if (REG_P (op))
{ {
......
2019-03-20 Jakub Jelinek <jakub@redhat.com>
PR target/89752
* g++.target/aarch64/aarch64.exp: New file.
* g++.target/aarch64/pr89752.C: New test.
2019-03-19 Martin Sebor <msebor@redhat.com> 2019-03-19 Martin Sebor <msebor@redhat.com>
PR tree-optimization/89688 PR tree-optimization/89688
......
# Specific regression driver for AArch64.
# Copyright (C) 2009-2019 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
# GCC is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# GCC is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>. */
# GCC testsuite that uses the `dg.exp' driver.
# Exit immediately if this isn't an AArch64 target.
if {![istarget aarch64*-*-*] } then {
return
}
# Load support procs.
load_lib g++-dg.exp
global DEFAULT_CXXFLAGS
if ![info exists DEFAULT_CXXFLAGS] then {
set DEFAULT_CXXFLAGS " -pedantic-errors"
}
# Initialize `dg'.
dg-init
# Main loop.
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] \
"" $DEFAULT_CXXFLAGS
# All done.
dg-finish
// PR target/89752
// { dg-do compile }
struct A { A (); ~A (); short c; };
void
foo ()
{
A a0, a1;
__asm volatile ("" : "=rm" (a0), "=rm" (a1) : "0" (a0), "1" (a1)); // { dg-error "inconsistent operand constraints in an 'asm'" }
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment