diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/gimplify.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr29119.c | 7 |
4 files changed, 19 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8977c39..8eca250 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-10-11 Richard Guenther <rguenther@suse.de> + + PR inline-asm/29119 + * gimplify.c (gimplify_asm_expr): Mark the gimplified lvalue + addressable. + 2006-10-10 Brooks Moses <bmoses@stanford.edu> * configure.ac: Added pdf to "Make-hooks" diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 1a88c60..ab11a83 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 6cbfd6c..c9b7c54 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-10-11 Richard Guenther <rguenther@suse.de> + + PR inline-asm/29119 + * gcc.dg/torture/pr29119.c: New testcase. + 2006-10-10 Jakub Jelinek <jakub@redhat.com> 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 0000000..63e5d86 --- /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;}))); +} + |