From ba38541ad25b14adf226bc6edf0bd0ee152daca7 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Wed, 11 Oct 2006 14:03:37 +0000 Subject: [PATCH] re PR inline-asm/29119 (Internal compiler error while adding __asm__ statement) 2006-10-11 Richard Guenther PR inline-asm/29119 * gimplify.c (gimplify_asm_expr): Mark the gimplified lvalue addressable. * gcc.dg/torture/pr29119.c: New testcase. From-SVN: r117633 --- gcc/ChangeLog | 6 ++++++ gcc/gimplify.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/torture/pr29119.c | 7 +++++++ 4 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/torture/pr29119.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8977c39d635..8eca2504987 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-10-11 Richard Guenther + + PR inline-asm/29119 + * gimplify.c (gimplify_asm_expr): Mark the gimplified lvalue + addressable. + 2006-10-10 Brooks Moses * configure.ac: Added pdf to "Make-hooks" diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 1a88c60c5d0..ab11a832fdf 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -4036,9 +4036,9 @@ gimplify_asm_expr (tree *expr_p, tree *pre_p, tree *post_p) /* If the operand is a memory input, it should be an lvalue. */ if (!allows_reg && allows_mem) { - lang_hooks.mark_addressable (TREE_VALUE (link)); tret = gimplify_expr (&TREE_VALUE (link), pre_p, post_p, is_gimple_lvalue, fb_lvalue | fb_mayfail); + lang_hooks.mark_addressable (TREE_VALUE (link)); if (tret == GS_ERROR) { error ("memory input %d is not directly addressable", i); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6cbfd6cecb0..c9b7c54fd6d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-10-11 Richard Guenther + + PR inline-asm/29119 + * gcc.dg/torture/pr29119.c: New testcase. + 2006-10-10 Jakub Jelinek PR middle-end/29272 diff --git a/gcc/testsuite/gcc.dg/torture/pr29119.c b/gcc/testsuite/gcc.dg/torture/pr29119.c new file mode 100644 index 00000000000..63e5d8693a9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr29119.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ + +void ldt_add_entry(void) +{ + __asm__ ("" :: "m"(({unsigned __v; __v;}))); +} +