OSDN Git Service

PR target/22093
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 30 Sep 2009 07:13:20 +0000 (07:13 +0000)
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 30 Sep 2009 07:13:20 +0000 (07:13 +0000)
* config/alpha/alpha.md (unaligned_storehi_be): Force operand
of plus RTX into register.

testsuite/ChangeLog:

PR target/22093
* gcc.target/alpha/pr22093.c: New test.

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

gcc/ChangeLog
gcc/config/alpha/alpha.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/alpha/pr22093.c [new file with mode: 0644]

index 70a3efc..a14b81c 100644 (file)
@@ -1,3 +1,9 @@
+2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/22093
+       * config/alpha/alpha.md (unaligned_storehi_be): Force operand
+       of plus RTX into register.
+
 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
        * doc/install.texi: Linguistic and markup fixes.
index 2773008..2327879 100644 (file)
        (mem:DI (and:DI (match_operand:DI 0 "address_operand" "")
                        (const_int -8))))
    (set (match_operand:DI 2 "register_operand" "")
-       (plus:DI (match_dup 0) (const_int 1)))
+       (plus:DI (match_dup 5) (const_int 1)))
    (set (match_dup 3)
        (and:DI (not:DI (ashift:DI
                          (const_int 65535)
    (set (mem:DI (and:DI (match_dup 0) (const_int -8)))
        (match_dup 4))]
   "WORDS_BIG_ENDIAN"
-  "")
+  "operands[5] = force_reg (DImode, operands[0]);")
 \f
 ;; Here are the define_expand's for QI and HI moves that use the above
 ;; patterns.  We have the normal sets, plus the ones that need scratch
index 4a7961c..9c3ca43 100644 (file)
@@ -1,3 +1,8 @@
+2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/22093
+       * gcc.target/alpha/pr22093.c: New test.
+
 2009-09-29  John Freeman  <jfreeman08@gmail.com>
            Jason Merrill  <jason@redhat.com>
 
diff --git a/gcc/testsuite/gcc.target/alpha/pr22093.c b/gcc/testsuite/gcc.target/alpha/pr22093.c
new file mode 100644 (file)
index 0000000..aa00e15
--- /dev/null
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+struct shared_ptr_struct
+{
+  unsigned long phase : 48;
+  unsigned thread : 16;
+  void *addr;
+} x;
+
+void foo (void)
+{
+   x.thread = 2;
+}