With the soft-float n64 ABI and the data-sym-pool.c test case code like 
below is produced:

        .file   1 "data-sym-pool.c"
        .section .mdebug.abi64
        .previous
        .nan    legacy
        .module softfloat
        .module oddspreg
        .abicalls
        .option pic0
        .text
        .align  2
        .globl  frob
        .set    mips16
        .set    nomicromips
        .ent    frob
        .type   frob, @function
frob:
        .frame  $17,16,$31              # vars= 0, regs= 1/0, args= 0, gp= 0
        .mask   0x00020000,-8
        .fmask  0x00000000,0
        daddiu  $sp,-16
        sd      $17,8($sp)
        move    $17,$sp
        ld      $2,.L3
        move    $sp,$17
        ld      $17,8($sp)
        daddiu  $sp,16
        jr      $31
        .type   __pool_frob_3, @object
__pool_frob_3:
        .align  3
.L3:
        .dword  305419896
        .type   __pend_frob_3, @function
__pend_frob_3:
        .insn
        .end    frob
        .size   frob, .-frob
        .ident  "GCC: (GNU) 8.0.1 20180410 (experimental)"

(we have no support for hard-float n64 MIPS16 code generation), which 
means that the test case will fail, as the regular expression pattern 
expects `lw' and `.word' rather than `ld' and `.dword' respectively to 
appear in assembly code generation.  Correct the pattern in an obvious 
way then making it accept both intructions and pseudo-ops.

        gcc/testsuite/
        * gcc.target/mips/data-sym-pool.c (dg-options): Match `ld' and
        `.dword' in addition to `lw' and `.word'.
---
Hi,

 I have regression-tested this with the `mips-mti-linux-gnu' target and 
the o32 ABI.  I don't have an n64 soft-float multilib configured, so the 
manually generated assembly file included with the description serves as 
the proof for what needs to be matched.

 OK to apply?

  Maciej
---
 gcc/testsuite/gcc.target/mips/data-sym-pool.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

gcc-mips16-test-data-sym-pool-dword.diff
Index: gcc/gcc/testsuite/gcc.target/mips/data-sym-pool.c
===================================================================
--- gcc.orig/gcc/testsuite/gcc.target/mips/data-sym-pool.c      2018-04-10 
23:27:49.000000000 +0100
+++ gcc/gcc/testsuite/gcc.target/mips/data-sym-pool.c   2018-04-10 
23:37:05.357453843 +0100
@@ -26,4 +26,4 @@ __pend_frob_3:                                        # The 
symbol must mat
    symbol from being placed in the constant pool at `-O0' for SVR4 code
    and consequently interfering with test expectations.  */
 
-/* { dg-final { scan-assembler 
"\tlw\t\\\$\[0-9\]+,(.L(\[0-9\]+))\n.*\t\\.type\t(__pool_frob_\\2), 
@object\n\\3:\n\t\\.align\t2\n\\1:\n\t\\.word\t305419896\n\t\\.type\t(__pend_frob_\\2),
 @function\n\\4:\n\t\\.insn\n" } } */
+/* { dg-final { scan-assembler 
"\tl\[wd\]\t\\\$\[0-9\]+,(.L(\[0-9\]+))\n.*\t\\.type\t(__pool_frob_\\2), 
@object\n\\3:\n\t\\.align\t2\n\\1:\n\t\\.d?word\t305419896\n\t\\.type\t(__pend_frob_\\2),
 @function\n\\4:\n\t\\.insn\n" } } */

Reply via email to