From: Maciej W. Rozycki Date: Tue, 28 May 2013 22:19:34 +0000 (+0000) Subject: gas/ X-Git-Tag: cygwin-1_7_19-release~67 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f19ccbda970a50bf1b633aea25f04c0fa873b32c;p=thirdparty%2Fbinutils-gdb.git gas/ * config/tc-mips.c (macro) : Don't use $zero for address calculation. gas/testsuite/ * gas/mips/ld-zero.d: New test. * gas/mips/ld-zero-2.d: New test. * gas/mips/ld-zero-3.d: New test. * gas/mips/ld-zero-q.d: New test. * gas/mips/ld-zero-u.d: New test. * gas/mips/ecoff@ld-zero-3.d: New test. * gas/mips/micromips@ld-zero-2.d: New test. * gas/mips/micromips@ld-zero-3.d: New test. * gas/mips/ld-zero.s: New test source. * gas/mips/ld-zero-2.s: New test source. * gas/mips/ld-zero-3.s: New test source. * gas/mips/ld-zero-q.s: New test source. * gas/mips/ld-zero-u.s: New test source. * gas/mips/mips.exp: Run the new tests. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index b8fa3a5b1b0..b9731852961 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2013-05-28 Chao-ying Fu + + * config/tc-mips.c (macro) : Don't use $zero for address + calculation. + 2013-05-28 Yufeng Zhang * config/tc-aarch64.c (reloc_table): Update to use diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 9b191bbe8b2..1f16dc9cfef 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -8286,7 +8286,8 @@ macro (struct mips_cl_insn *ip) goto ld_st; ld: - if (breg == treg + lp) + /* We don't want to use $0 as tempreg. */ + if (breg == treg + lp || treg + lp == ZERO) goto ld_st; else tempreg = treg + lp; diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 6bd45d5a3b7..5253912a9a0 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,20 @@ +2013-05-28 Maciej W. Rozycki + + * gas/mips/ld-zero.d: New test. + * gas/mips/ld-zero-2.d: New test. + * gas/mips/ld-zero-3.d: New test. + * gas/mips/ld-zero-q.d: New test. + * gas/mips/ld-zero-u.d: New test. + * gas/mips/ecoff@ld-zero-3.d: New test. + * gas/mips/micromips@ld-zero-2.d: New test. + * gas/mips/micromips@ld-zero-3.d: New test. + * gas/mips/ld-zero.s: New test source. + * gas/mips/ld-zero-2.s: New test source. + * gas/mips/ld-zero-3.s: New test source. + * gas/mips/ld-zero-q.s: New test source. + * gas/mips/ld-zero-u.s: New test source. + * gas/mips/mips.exp: Run the new tests. + 2013-05-28 Yufeng Zhang * gas/aarch64/tls.d: Update. diff --git a/gas/testsuite/gas/mips/ecoff@ld-zero-3.d b/gas/testsuite/gas/mips/ecoff@ld-zero-3.d new file mode 100644 index 00000000000..4f682b1a897 --- /dev/null +++ b/gas/testsuite/gas/mips/ecoff@ld-zero-3.d @@ -0,0 +1,4 @@ +#objdump: -dr --prefix-addresses +#name: MIPS III load $zero +#source: ld-zero-3.s +#dump: ld-zero-3.d diff --git a/gas/testsuite/gas/mips/ld-zero-2.d b/gas/testsuite/gas/mips/ld-zero-2.d new file mode 100644 index 00000000000..ddab5158d80 --- /dev/null +++ b/gas/testsuite/gas/mips/ld-zero-2.d @@ -0,0 +1,11 @@ +#objdump: -dr --prefix-addresses +#as: -32 +#name: MIPS II load $zero + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> lui at,0x1234 +[0-9a-f]+ <[^>]*> addu at,at,v0 +[0-9a-f]+ <[^>]*> ll zero,22136\(at\) + \.\.\. diff --git a/gas/testsuite/gas/mips/ld-zero-2.s b/gas/testsuite/gas/mips/ld-zero-2.s new file mode 100644 index 00000000000..3bf4ca400cb --- /dev/null +++ b/gas/testsuite/gas/mips/ld-zero-2.s @@ -0,0 +1,7 @@ + .text +foo: + ll $0, 0x12345678($2) + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/gas/testsuite/gas/mips/ld-zero-3.d b/gas/testsuite/gas/mips/ld-zero-3.d new file mode 100644 index 00000000000..e8ae74d4f88 --- /dev/null +++ b/gas/testsuite/gas/mips/ld-zero-3.d @@ -0,0 +1,17 @@ +#objdump: -dr --prefix-addresses +#as: -mabi=o64 +#name: MIPS III load $zero + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> lui at,0x1234 +[0-9a-f]+ <[^>]*> addu at,at,v0 +[0-9a-f]+ <[^>]*> lwu zero,22136\(at\) +[0-9a-f]+ <[^>]*> lui at,0x1234 +[0-9a-f]+ <[^>]*> addu at,at,v0 +[0-9a-f]+ <[^>]*> ld zero,22136\(at\) +[0-9a-f]+ <[^>]*> lui at,0x1234 +[0-9a-f]+ <[^>]*> addu at,at,v0 +[0-9a-f]+ <[^>]*> lld zero,22136\(at\) + \.\.\. diff --git a/gas/testsuite/gas/mips/ld-zero-3.s b/gas/testsuite/gas/mips/ld-zero-3.s new file mode 100644 index 00000000000..7ca414c751e --- /dev/null +++ b/gas/testsuite/gas/mips/ld-zero-3.s @@ -0,0 +1,9 @@ + .text +foo: + lwu $0, 0x12345678($2) + ld $0, 0x12345678($2) + lld $0, 0x12345678($2) + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/gas/testsuite/gas/mips/ld-zero-q.d b/gas/testsuite/gas/mips/ld-zero-q.d new file mode 100644 index 00000000000..1e924621234 --- /dev/null +++ b/gas/testsuite/gas/mips/ld-zero-q.d @@ -0,0 +1,11 @@ +#objdump: -dr --prefix-addresses +#as: -32 +#name: MIPS R5900 load $zero + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> lui at,0x1234 +[0-9a-f]+ <[^>]*> addu at,at,v0 +[0-9a-f]+ <[^>]*> lq zero,22136\(at\) + \.\.\. diff --git a/gas/testsuite/gas/mips/ld-zero-q.s b/gas/testsuite/gas/mips/ld-zero-q.s new file mode 100644 index 00000000000..972eb1cefad --- /dev/null +++ b/gas/testsuite/gas/mips/ld-zero-q.s @@ -0,0 +1,7 @@ + .text +foo: + lq $0, 0x12345678($2) + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/gas/testsuite/gas/mips/ld-zero-u.d b/gas/testsuite/gas/mips/ld-zero-u.d new file mode 100644 index 00000000000..a54f9f2c668 --- /dev/null +++ b/gas/testsuite/gas/mips/ld-zero-u.d @@ -0,0 +1,15 @@ +#objdump: -dr --prefix-addresses +#as: -32 +#name: microMIPS load $zero + +.*: +file format .*mips.* +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> lui at,0x1234 +[0-9a-f]+ <[^>]*> ori at,at,0x5000 +[0-9a-f]+ <[^>]*> addu at,at,v0 +[0-9a-f]+ <[^>]*> lwp zero,1656\(at\) +[0-9a-f]+ <[^>]*> lui at,0x1234 +[0-9a-f]+ <[^>]*> ori at,at,0x5000 +[0-9a-f]+ <[^>]*> addu at,at,v0 +[0-9a-f]+ <[^>]*> ldp zero,1656\(at\) + \.\.\. diff --git a/gas/testsuite/gas/mips/ld-zero-u.s b/gas/testsuite/gas/mips/ld-zero-u.s new file mode 100644 index 00000000000..c31e85508fe --- /dev/null +++ b/gas/testsuite/gas/mips/ld-zero-u.s @@ -0,0 +1,8 @@ + .text +foo: + lwp $0, 0x12345678($2) + ldp $0, 0x12345678($2) + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/gas/testsuite/gas/mips/ld-zero.d b/gas/testsuite/gas/mips/ld-zero.d new file mode 100644 index 00000000000..6ee9260c814 --- /dev/null +++ b/gas/testsuite/gas/mips/ld-zero.d @@ -0,0 +1,23 @@ +#objdump: -dr --prefix-addresses +#as: -32 +#name: MIPS load $zero + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> lui at,0x1234 +[0-9a-f]+ <[^>]*> addu at,at,v0 +[0-9a-f]+ <[^>]*> lb zero,22136\(at\) +[0-9a-f]+ <[^>]*> lui at,0x1234 +[0-9a-f]+ <[^>]*> addu at,at,v0 +[0-9a-f]+ <[^>]*> lbu zero,22136\(at\) +[0-9a-f]+ <[^>]*> lui at,0x1234 +[0-9a-f]+ <[^>]*> addu at,at,v0 +[0-9a-f]+ <[^>]*> lh zero,22136\(at\) +[0-9a-f]+ <[^>]*> lui at,0x1234 +[0-9a-f]+ <[^>]*> addu at,at,v0 +[0-9a-f]+ <[^>]*> lhu zero,22136\(at\) +[0-9a-f]+ <[^>]*> lui at,0x1234 +[0-9a-f]+ <[^>]*> addu at,at,v0 +[0-9a-f]+ <[^>]*> lw zero,22136\(at\) + \.\.\. diff --git a/gas/testsuite/gas/mips/ld-zero.s b/gas/testsuite/gas/mips/ld-zero.s new file mode 100644 index 00000000000..b8af6fe8924 --- /dev/null +++ b/gas/testsuite/gas/mips/ld-zero.s @@ -0,0 +1,11 @@ + .text +foo: + lb $0, 0x12345678($2) + lbu $0, 0x12345678($2) + lh $0, 0x12345678($2) + lhu $0, 0x12345678($2) + lw $0, 0x12345678($2) + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/gas/testsuite/gas/mips/micromips@ld-zero-2.d b/gas/testsuite/gas/mips/micromips@ld-zero-2.d new file mode 100644 index 00000000000..7fcdc44aad4 --- /dev/null +++ b/gas/testsuite/gas/mips/micromips@ld-zero-2.d @@ -0,0 +1,13 @@ +#objdump: -dr --prefix-addresses +#as: -32 +#name: MIPS II load $zero +#source: ld-zero-2.s + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> lui at,0x1234 +[0-9a-f]+ <[^>]*> ori at,at,0x5000 +[0-9a-f]+ <[^>]*> addu at,at,v0 +[0-9a-f]+ <[^>]*> ll zero,1656\(at\) + \.\.\. diff --git a/gas/testsuite/gas/mips/micromips@ld-zero-3.d b/gas/testsuite/gas/mips/micromips@ld-zero-3.d new file mode 100644 index 00000000000..49c005bd694 --- /dev/null +++ b/gas/testsuite/gas/mips/micromips@ld-zero-3.d @@ -0,0 +1,21 @@ +#objdump: -dr --prefix-addresses +#as: -32 +#name: MIPS III load $zero +#source: ld-zero-3.s + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> lui at,0x1234 +[0-9a-f]+ <[^>]*> ori at,at,0x5000 +[0-9a-f]+ <[^>]*> addu at,at,v0 +[0-9a-f]+ <[^>]*> lwu zero,1656\(at\) +[0-9a-f]+ <[^>]*> lui at,0x1234 +[0-9a-f]+ <[^>]*> addu at,v0,at +[0-9a-f]+ <[^>]*> lw zero,22136\(at\) +[0-9a-f]+ <[^>]*> lw at,22140\(at\) +[0-9a-f]+ <[^>]*> lui at,0x1234 +[0-9a-f]+ <[^>]*> ori at,at,0x5000 +[0-9a-f]+ <[^>]*> addu at,at,v0 +[0-9a-f]+ <[^>]*> lld zero,1656\(at\) + \.\.\. diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index aef771a65dd..1107fb6b7bc 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -698,6 +698,11 @@ if { [istarget mips*-*-vxworks*] } { [mips_arch_list_matching mips3 !singlefloat] } } + run_dump_test_arches "ld-zero" [mips_arch_list_matching mips1] + run_dump_test_arches "ld-zero-2" [mips_arch_list_matching mips2 !nollsc] + run_dump_test_arches "ld-zero-3" [mips_arch_list_matching mips3 !nollsc] + run_dump_test_arches "ld-zero-u" [mips_arch_list_matching micromips] + run_dump_test_arches "ld-zero-q" [mips_arch_list_matching r5900] if $elf { run_dump_test "ld-svr4pic" } if $elf { run_dump_test "ld-xgot" } run_dump_test_arches "li" [mips_arch_list_matching mips1]