From ed56217b797ee7b8bd66be0ba2fdbf371dad1828 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 12 Nov 2010 12:30:27 +0100 Subject: [PATCH] backport: re PR middle-end/43690 (Internal compiler error detected by avr-gcc.) Backport from mainline 2010-11-05 Jakub Jelinek PR middle-end/43690 * gimplify.c (gimplify_asm_expr): If a "m" input is a {pre,post}{in,de}crement, fail. * c-c++-common/pr43690.c: New test. From-SVN: r166650 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/c-c++-common/pr43690.c | 13 +++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 gcc/testsuite/c-c++-common/pr43690.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bd022e95b4ae..4f2a16a01d4b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,12 @@ 2010-11-12 Jakub Jelinek Backport from mainline + 2010-11-05 Jakub Jelinek + + PR middle-end/43690 + * gimplify.c (gimplify_asm_expr): If a "m" input is a + {pre,post}{in,de}crement, fail. + 2010-11-03 Jakub Jelinek PR tree-optimization/46107 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index be2b2c0ea0a4..08b992446d26 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2010-11-12 Jakub Jelinek Backport from mainline + 2010-11-05 Jakub Jelinek + + PR middle-end/43690 + * c-c++-common/pr43690.c: New test. + 2010-11-03 Jakub Jelinek PR tree-optimization/46107 diff --git a/gcc/testsuite/c-c++-common/pr43690.c b/gcc/testsuite/c-c++-common/pr43690.c new file mode 100644 index 000000000000..67c6cb0f88cd --- /dev/null +++ b/gcc/testsuite/c-c++-common/pr43690.c @@ -0,0 +1,13 @@ +/* PR middle-end/43690 */ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +void +foo (char *x) +{ + asm ("" : : "m" (x++)); /* { dg-error "is not directly addressable" } */ + asm ("" : : "m" (++x)); /* { dg-error "is not directly addressable" } */ + asm ("" : : "m" (x--)); /* { dg-error "is not directly addressable" } */ + asm ("" : : "m" (--x)); /* { dg-error "is not directly addressable" } */ + asm ("" : : "m" (x + 1)); /* { dg-error "is not directly addressable" } */ +} -- 2.47.2