From: Andrey Belevantsev Date: Thu, 9 Feb 2012 10:17:55 +0000 (+0400) Subject: backport: [multiple changes] X-Git-Tag: releases/gcc-4.5.4~234 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=98b5cf98899c05e1b7240581c6ae81e27862e40d;p=thirdparty%2Fgcc.git backport: [multiple changes] 2012-02-09 Andrey Belevantsev Backport from mainline 2012-01-20 Andrey Belevantsev PR target/51106 * function.c (instantiate_virtual_regs_in_insn): Use delete_insn_and_edges when removing a wrong asm insn. Backport from mainline 2012-01-20 Jakub Jelinek PR target/51106 * gcc.dg/torture/pr51106-1.c: New test. * gcc.dg/torture/pr51106-2.c: New test. From-SVN: r184040 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a08b2e8ec692..c6e8d9fb03ea 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2012-02-09 Andrey Belevantsev + + Backport from mainline + 2012-01-20 Andrey Belevantsev + + PR target/51106 + * function.c (instantiate_virtual_regs_in_insn): Use + delete_insn_and_edges when removing a wrong asm insn. + 2012-02-07 Quentin Neill Backport from mainline: diff --git a/gcc/function.c b/gcc/function.c index 09007fdc988c..cb34e26170ac 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -1,7 +1,7 @@ /* Expands front end tree to back end RTL for GCC. Copyright (C) 1987, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, - 2010 Free Software Foundation, Inc. + 2010, 2012 Free Software Foundation, Inc. This file is part of GCC. @@ -1643,7 +1643,7 @@ instantiate_virtual_regs_in_insn (rtx insn) if (!check_asm_operands (PATTERN (insn))) { error_for_asm (insn, "impossible constraint in %"); - delete_insn (insn); + delete_insn_and_edges (insn); } } else diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 69488199167b..b3fea1f8050f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2012-02-09 Andrey Belevantsev + + Backport from mainline + 2012-01-20 Jakub Jelinek + + PR target/51106 + * gcc.dg/torture/pr51106-1.c: New test. + * gcc.dg/torture/pr51106-2.c: New test. + 2012-01-28 Tobias Burnus PR fortran/52022 diff --git a/gcc/testsuite/gcc.dg/torture/pr51106-1.c b/gcc/testsuite/gcc.dg/torture/pr51106-1.c new file mode 100644 index 000000000000..10b3b682b98b --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr51106-1.c @@ -0,0 +1,14 @@ +/* PR target/51106 */ +/* { dg-do "compile" } */ +/* { dg-skip-if "RTL error" { "*-*-*" } { "-fno-fat-lto-objects" } { "" } } */ + +int +foo (int x) +{ + asm goto ("" : : "i" (x) : : lab); /* { dg-error "impossible constraint" } */ + return 1; +lab: + return 0; +} + +/* { dg-warning "probably doesn.t match constraints" "" { target *-*-* } 8 } */ diff --git a/gcc/testsuite/gcc.dg/torture/pr51106-2.c b/gcc/testsuite/gcc.dg/torture/pr51106-2.c new file mode 100644 index 000000000000..e69bf1b01ab6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr51106-2.c @@ -0,0 +1,14 @@ +/* PR target/51106 */ +/* { dg-do "compile" } */ +/* { dg-skip-if "RTL error" { "*-*-*" } { "-fno-fat-lto-objects" } { "" } } */ + +int +bar (int x) +{ + asm goto ("" : : "i" (x) : : lab); /* { dg-error "impossible constraint" } */ + __builtin_unreachable (); +lab: + return 0; +} + +/* { dg-warning "probably doesn.t match constraints" "" { target *-*-* } 8 } */