From: Andrey Belevantsev Date: Thu, 9 Feb 2012 10:10:36 +0000 (+0400) Subject: backport: [multiple changes] X-Git-Tag: releases/gcc-4.6.3~115 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b7c8ca6d75cd9ca31e050563589e43952b73a9a7;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: r184038 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fd9ed1013f1c..119534e69faa 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 Eric Botcazou PR middle-end/51994 diff --git a/gcc/function.c b/gcc/function.c index 1f7722c62a22..d728384699f1 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, 2011 Free Software Foundation, Inc. + 2010, 2011, 2012 Free Software Foundation, Inc. This file is part of GCC. @@ -1747,7 +1747,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 bbfd905a27b1..48b2aaf5b829 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-02-08 Tobias Burnus PR fortran/52151 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 } */