OSDN Git Service

2006-10-11 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 Oct 2006 14:03:37 +0000 (14:03 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 Oct 2006 14:03:37 +0000 (14:03 +0000)
PR inline-asm/29119
* gimplify.c (gimplify_asm_expr): Mark the gimplified lvalue
addressable.

* gcc.dg/torture/pr29119.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117633 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/gimplify.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/pr29119.c [new file with mode: 0644]

index 8977c39..8eca250 100644 (file)
@@ -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"
index 1a88c60..ab11a83 100644 (file)
@@ -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);
index 6cbfd6c..c9b7c54 100644 (file)
@@ -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 (file)
index 0000000..63e5d86
--- /dev/null
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+
+void ldt_add_entry(void)
+{
+   __asm__ ("" :: "m"(({unsigned __v; __v;})));
+}
+