re PR target/56114 (x86_64-linux-gnu-gcc generate wrong asm instruction MOVABS for...
authorUros Bizjak <uros@gcc.gnu.org>
Sun, 27 Jan 2013 13:16:54 +0000 (14:16 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Sun, 27 Jan 2013 13:16:54 +0000 (14:16 +0100)
PR target/56114
* config/i386/i386.md (*movabs<mode>_1): Add square brackets around
operand 0 in movabs insn template for -masm=intel asm alternative.
(*movabs<mode>_2): Ditto for operand 1.

testsuite/ChangeLog:

PR target/56114
* gcc.target/i386/pr56114.c: New test.

From-SVN: r195494

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

index a49bfdd..05f6635 100644 (file)
@@ -1,3 +1,10 @@
+2013-01-27  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/56114
+       * config/i386/i386.md (*movabs<mode>_1): Add square brackets around
+       operand 0 in movabs insn template for -masm=intel asm alternative.
+       (*movabs<mode>_2): Ditto for operand 1.
+
 2013-01-26  David Holsgrove <david.holsgrove@xilinx.com>
 
        PR target/54663
@@ -38,8 +45,8 @@
 
        * config/aarch64/aarch64-simd-builtins.def: Separate sq<r>dmulh_lane
        entries into lane and laneq entries.
-       * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh_lane<mode>): Remove
-       AdvSIMD scalar modes.
+       * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh_lane<mode>):
+       Remove AdvSIMD scalar modes.
        (aarch64_sq<r>dmulh_laneq<mode>): New.
        (aarch64_sq<r>dmulh_lane<mode>): New RTL pattern for Scalar AdvSIMD
        modes.
@@ -91,8 +98,7 @@
 
 2013-01-24  Diego Novillo  <dnovillo@google.com>
 
-       * Makefile.in (GGC): Remove.  Replace all instances with
-       ggc-page.o.
+       * Makefile.in (GGC): Remove.  Replace all instances with ggc-page.o.
        (ggc-zone.o): Remove.
        * configure.ac: Remove option --with-gc.
        * configure: Re-generate.
        (output_type_enum): Remove.  Update all users.
        (write_enum_defn): Remove.  Update all users.
        (enum alloc_zone): Remove.  Update all users.
-       (write_splay_tree_allocator_def): Remove generation of gt_e_*
-       argument.
+       (write_splay_tree_allocator_def): Remove generation of gt_e_* argument.
        * ggc-common.c (ggc_splay_alloc): Remove first argument.
        Update all callers.
        (struct ptr_data): Remove field TYPE.  Update all users.
-       (gt_pch_note_object): Remove argument TYPE.  Update all
-       users.
+       (gt_pch_note_object): Remove argument TYPE.  Update all users.
        * ggc-internal.h (ggc_pch_alloc_object): Remove last argument.
        Update all users.
        * ggc-none.c (ggc_alloc_typed_stat): Remove.
        (ggc_internal_alloc_zone_stat): Remove.
        (ggc_internal_cleared_alloc_zone_stat): Remove.
        * ggc-page.c (ggc_alloc_typed_stat): Remove.
-       (ggc_pch_count_object): Remove last argument.  Update all
-       users.
-       (ggc_pch_alloc_object): Remove last argument.  Update all
-       users.
+       (ggc_pch_count_object): Remove last argument.  Update all users.
+       (ggc_pch_alloc_object): Remove last argument.  Update all users.
        (struct alloc_zone): Remove.
        * ggc-zone.c: Remove.
-       * ggc.h (gt_pch_note_object): Remove last argument.  Update
-       all users.
+       * ggc.h (gt_pch_note_object): Remove last argument.  Update all users.
        (struct alloc_zone): Remove.
        (ggc_alloc_typed_stat): Remove.
        (ggc_alloc_typed): Remove.
        (tree_zone): Remove.  Update all users.
        (tree_id_zone): Remove.  Update all users.
        (ggc_internal_zone_alloc_stat): Remove.  Update all users.
-       (ggc_internal_zone_cleared_alloc_stat): Remove.  Update all
-       users.
+       (ggc_internal_zone_cleared_alloc_stat): Remove.  Update all users.
        (ggc_internal_zone_vec_alloc_stat): Remove.  Update all users.
-       * tree-ssanames.c: Remove references to zone allocator in
-       comments.
+       * tree-ssanames.c: Remove references to zone allocator in comments.
 
 2013-01-24  Georg-Johann Lay  <avr@gjlay.de>
 
 
 2013-01-23  Kostya Serebryany  <kcc@google.com>
 
-       * config/darwin.h: remove dependency on CoreFoundation (asan on Mac OS).
+       * config/darwin.h: remove dependency on
+       CoreFoundation (asan on Mac OS).
 
 2013-01-23  Jakub Jelinek  <jakub@redhat.com>
 
index 9d0a499..59b5b69 100644 (file)
        (match_operand:SWI1248x 1 "nonmemory_operand" "a,r<i>"))]
   "TARGET_LP64 && ix86_check_movabs (insn, 0)"
   "@
-   movabs{<imodesuffix>}\t{%1, %P0|%P0, %1}
+   movabs{<imodesuffix>}\t{%1, %P0|[%P0], %1}
    mov{<imodesuffix>}\t{%1, %a0|%a0, %1}"
   [(set_attr "type" "imov")
    (set_attr "modrm" "0,*")
         (mem:SWI1248x (match_operand:DI 1 "x86_64_movabs_operand" "i,r")))]
   "TARGET_LP64 && ix86_check_movabs (insn, 1)"
   "@
-   movabs{<imodesuffix>}\t{%P1, %0|%0, %P1}
+   movabs{<imodesuffix>}\t{%P1, %0|%0, [%P1]}
    mov{<imodesuffix>}\t{%a1, %0|%0, %a1}"
   [(set_attr "type" "imov")
    (set_attr "modrm" "0,*")
index 4d5a236..e5e1949 100644 (file)
@@ -1,3 +1,8 @@
+2013-01-27  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/56114
+       * gcc.target/i386/pr56114.c: New test.
+
 2013-01-27  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/55984
diff --git a/gcc/testsuite/gcc.target/i386/pr56114.c b/gcc/testsuite/gcc.target/i386/pr56114.c
new file mode 100644 (file)
index 0000000..43e62ae
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do assemble } */
+/* { dg-options "-O2 -masm=intel" } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-require-effective-target masm_intel } */
+
+long
+foo2 (void)
+{
+  return *(volatile int *) 0xFEE00000;
+}