]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/52330 (pr50305.c: valgrind problem on invalid asm)
authorUros Bizjak <ubizjak@gmail.com>
Wed, 22 Feb 2012 19:47:42 +0000 (20:47 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Wed, 22 Feb 2012 19:47:42 +0000 (20:47 +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: r184492

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

index c6f4672e32f21cf50ffd06cc0bcad5550ac3c5f7..ffa152a24a1877bed13dee9de2bd4840d6d9e61f 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-01-15  Uros Bizjak  <ubizjak@gmail.com>
 
        PR rtl-optimization/51821
index 101374934a30a95ea52a68c0d4da1ef11146970c..e86f7cf7f37e73ecb7ffcf6ba3c048e6f03c8a6d 100644 (file)
@@ -11224,6 +11224,13 @@ 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 c4c92f1920d960f624bac3cb346710855d7325dc..35e1b386825e72790b4fbf47bf0ab0dbbae9a464 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-01-20  Kai Tietz  <ktietz@redhat.com>
 
        * g++.dg/torture/pr51344.C: Fix typo.
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" } */
+}