From 67ed5d34a0744ef637049974b3508165e62d1a69 Mon Sep 17 00:00:00 2001
From: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Sun, 14 Jan 2007 11:14:20 +0000
Subject: [PATCH]         PR target/30413         * config/i386/i386.c
 (print_operand) ['z']: Output 'b' for         operands of size 1.

testsuite/ChangeLog:

        PR target/30413
        * gcc.target/i386/pr30413.c: New test.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120769 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/ChangeLog                           |  9 ++++++---
 gcc/config/i386/i386.c                  |  4 ++++
 gcc/testsuite/ChangeLog                 |  5 +++++
 gcc/testsuite/gcc.target/i386/pr30413.c | 18 ++++++++++++++++++
 4 files changed, 33 insertions(+), 3 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/i386/pr30413.c

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b5addb81dec2..7e785b63d200 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
+
+	PR target/30413
+	* config/i386/i386.c (print_operand) ['z']: Output 'b' for
+	operands of size 1.
+
 2007-01-14  Jan Hubicka  <jh@suse.cz>
 
 	* tree-dfa.c (remove_referenced_var): New function.
@@ -619,7 +625,6 @@
 
 	* config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
 	(*cosxf2): Rename to cosxf2_i387.
-
 	(*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
 	using X87MODEF12 mode macro. Rename patterns to
 	*sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
@@ -627,9 +632,7 @@
 	(*cosdf2, *cossf2): Ditto.
 	(sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
 	to match extended input operands.
-
 	(sincos<mode>3): New expander.
-
 	(*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
 	insn patterns and corresponding splitters.
 
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 579b4a32f948..a2ec4d8a2e5a 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -7918,6 +7918,10 @@ print_operand (FILE *file, rtx x, int code)
 	  /* This is the size of op from size of operand.  */
 	  switch (GET_MODE_SIZE (GET_MODE (x)))
 	    {
+	    case 1:
+	      putc ('b', file);
+	      return;
+
 	    case 2:
 #ifdef HAVE_GAS_FILDS_FISTS
 	      putc ('s', file);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ce42aaa2f5bf..e6fa28dc5ed4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
+
+	PR target/30413
+	* gcc.target/i386/pr30413.c: New test.
+
 2007-01-14  Thomas Koenig  <Thomas.Koenig@online.de>
 
 	PR fortran/30452
diff --git a/gcc/testsuite/gcc.target/i386/pr30413.c b/gcc/testsuite/gcc.target/i386/pr30413.c
new file mode 100644
index 000000000000..cd52d8bd92e3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr30413.c
@@ -0,0 +1,18 @@
+/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-O2" } */
+
+extern void abort (void);
+
+int test() {
+  char a, b = -1;
+  asm volatile ("mov%z0 %1, %0" : "=q"(a) : "m"(b));
+  return a;
+}
+
+int main()
+{
+  if (test() != -1)
+    abort();
+
+  return 0;
+}
-- 
GitLab