]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/52330 (pr50305.c: valgrind problem on invalid asm)
authorUros Bizjak <uros@gcc.gnu.org>
Wed, 22 Feb 2012 19:17:42 +0000 (20:17 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Wed, 22 Feb 2012 19:17:42 +0000 (20:17 +0100)
PR target/52330
* config/i386/i386.c (ix86_print_operand) <case 'H'>: Error out if x
is not offsettable memory reference.

testsuite/ChangeLog:

PR target/52330
* gcc.target/i386/pr52330.c: New test.

From-SVN: r184489

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr52330.c [new file with mode: 0644]

index 1e4f1591bf2f76591176441e861bf3491773e1b4..602ce015621bd7aece376630c6496ec9515813fa 100644 (file)
@@ -1,3 +1,9 @@
+2012-02-22  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/52330
+       * config/i386/i386.c (ix86_print_operand) <case 'H'>: Error out if x
+       is not offsettable memory reference.
+
 2012-02-21  Richard Earnshaw  <rearnsha@arm.com>
 
        PR target/52294
        PR lto/47497
        * lto-symtab.c (lto_cgraph_replace_node): Do not set thunk.alias.
        (lto_symtab_merge_cgraph_nodes_1): Update thunk.alias pointers here.
-       * cgraph.h (cgraph_same_body_alias, cgraph_add_thunk): Add node pointers.
+       * cgraph.h (cgraph_same_body_alias, cgraph_add_thunk): Add node
+       pointers.
        * cgraph.c (cgraph_same_body_alias_1, cgraph_same_body_alias,
        cgraph_add_thunk): Add node pointers.
        * lto-cgraph.c (lto_output_node): Verify that thunks&aliases are
index 6aa029709c9bfc50462e9d849d4514da40486a02..2ee8df99bde89ebd6449ec008ee1922eec0dc5c4 100644 (file)
@@ -14250,6 +14250,13 @@ ix86_print_operand (FILE *file, rtx x, int code)
          return;
 
        case 'H':
+         if (!offsettable_memref_p (x))
+           {
+             output_operand_lossage ("operand is not an offsettable memory "
+                                     "reference, invalid operand "
+                                     "code 'H'");
+             return;
+           }
          /* It doesn't actually matter what mode we use here, as we're
             only going to use this for printing.  */
          x = adjust_address_nv (x, DImode, 8);
index 6c2bd8cdba4f7b6b44b4a19b849627c6d4ec092a..0771b6ebda354958a0fe189a584c9d6245b3be69 100644 (file)
@@ -1,3 +1,8 @@
+2012-02-22  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/52330
+       * gcc.target/i386/pr52330.c: New test.
+
 2012-02-22  Ulrich Weigand  <ulrich.weigand@linaro.org>
 
        * lib/target-supports.exp (check_effective_target_vect_condition):
@@ -5,8 +10,7 @@
 
 2012-02-21  Kai Tietz  <ktietz@redhat.com>
 
-       * gcc.dg/bf-ms-layout-3.c: Mark char typed bitfield
-       as extension.
+       * gcc.dg/bf-ms-layout-3.c: Mark char typed bitfield as extension.
 
 2012-02-20  Kai Tietz  <ktietz@redhat.com>
 
diff --git a/gcc/testsuite/gcc.target/i386/pr52330.c b/gcc/testsuite/gcc.target/i386/pr52330.c
new file mode 100644 (file)
index 0000000..22ba0b2
--- /dev/null
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { dg-options "-O0" } */
+
+void foo (int a)
+{
+  asm volatile ("# %H0" : : "r" (a));  /* { dg-error "not an offsettable" } */
+}