summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2012-08-27 16:27:50 +0000
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2012-08-27 16:27:50 +0000
commit45bee5d0be8c3aef71e9495a71378fccecaab81d (patch)
tree357bdb69a5df0d487a6202594a2bc55afd31a94e
parent69b6195fe8b9cd8150e83ea085aa81ee6459c43f (diff)
downloadgcc-45bee5d0be8c3aef71e9495a71378fccecaab81d.tar.gz
gcc/testsuite/
* gcc.target/mips/mips.exp: Use gcc-dg-runtest rather than dg-runtest. (mips_option_groups): Remove optimization. Add various -f options. (mips-dg-options): Make -funroll-loops imply -funroll-all-loops and -pg imply -fno-omit-frame-pointer. * gcc.target/mips/abi-eabi32-long32.c: Remove optimization flag. * gcc.target/mips/abi-eabi32-long64.c: Likewise. * gcc.target/mips/abi-eabi64-long32.c: Likewise. * gcc.target/mips/abi-eabi64-long64.c: Likewise. * gcc.target/mips/abi-n32-long32-no-shared.c: Likewise. * gcc.target/mips/abi-n32-long32-pic.c: Likewise. * gcc.target/mips/abi-n32-long32.c: Likewise. * gcc.target/mips/abi-n32-long64-no-shared.c: Likewise. * gcc.target/mips/abi-n32-long64-pic.c: Likewise. * gcc.target/mips/abi-n32-long64.c: Likewise. * gcc.target/mips/abi-n64-long32-no-shared.c: Likewise. * gcc.target/mips/abi-n64-long32-pic.c: Likewise. * gcc.target/mips/abi-n64-long32.c: Likewise. * gcc.target/mips/abi-n64-long64-no-shared.c: Likewise. * gcc.target/mips/abi-n64-long64-pic.c: Likewise. * gcc.target/mips/abi-n64-long64.c: Likewise. * gcc.target/mips/abi-o32-long32-no-shared.c: Likewise. * gcc.target/mips/abi-o32-long32-pic.c: Likewise. * gcc.target/mips/abi-o32-long32.c: Likewise. * gcc.target/mips/abi-o32-long64-no-shared.c: Likewise. * gcc.target/mips/abi-o32-long64-pic.c: Likewise. * gcc.target/mips/abi-o32-long64.c: Likewise. * gcc.target/mips/abi-o64-long32-no-shared.c: Likewise. * gcc.target/mips/abi-o64-long32-pic.c: Likewise. * gcc.target/mips/abi-o64-long32.c: Likewise. * gcc.target/mips/abi-o64-long64-no-shared.c: Likewise. * gcc.target/mips/abi-o64-long64-pic.c: Likewise. * gcc.target/mips/abi-o64-long64.c: Likewise. * gcc.target/mips/asm-1.c: Likewise. * gcc.target/mips/branch-1.c: Likewise. * gcc.target/mips/call-3.c: Likewise. * gcc.target/mips/call-saved-3.c: Likewise. * gcc.target/mips/clear-cache-1.c: Likewise. * gcc.target/mips/div-1.c: Likewise. * gcc.target/mips/div-2.c: Likewise. * gcc.target/mips/div-3.c: Likewise. * gcc.target/mips/div-4.c: Likewise. * gcc.target/mips/div-5.c: Likewise. * gcc.target/mips/div-6.c: Likewise. * gcc.target/mips/div-7.c: Likewise. * gcc.target/mips/div-8.c: Likewise. * gcc.target/mips/div-9.c: Likewise. * gcc.target/mips/div-10.c: Likewise. * gcc.target/mips/div-11.c: Likewise. * gcc.target/mips/div-12.c: Likewise. * gcc.target/mips/dsp-ctrl.c: Likewise. * gcc.target/mips/dsp-no-lhx.c: Likewise. * gcc.target/mips/ext-8.c: Likewise. * gcc.target/mips/extend-2.c: Likewise. * gcc.target/mips/fix-r10000-1.c: Likewise. * gcc.target/mips/fix-r10000-2.c: Likewise. * gcc.target/mips/fix-r10000-3.c: Likewise. * gcc.target/mips/fix-r10000-4.c: Likewise. * gcc.target/mips/fix-r10000-5.c: Likewise. * gcc.target/mips/fix-r10000-6.c: Likewise. * gcc.target/mips/fix-r10000-7.c: Likewise. * gcc.target/mips/fix-r10000-8.c: Likewise. * gcc.target/mips/fix-r10000-9.c: Likewise. * gcc.target/mips/fix-r10000-10.c: Likewise. * gcc.target/mips/fix-r10000-11.c: Likewise. * gcc.target/mips/fix-r10000-12.c: Likewise. * gcc.target/mips/fix-r10000-13.c: Likewise. * gcc.target/mips/fix-r10000-14.c: Likewise. * gcc.target/mips/fix-r10000-15.c: Likewise. * gcc.target/mips/fpcmp-1.c: Likewise. * gcc.target/mips/fpcmp-2.c: Likewise. * gcc.target/mips/fpr-moves-7.c: Likewise. * gcc.target/mips/fpr-moves-8.c: Likewise. * gcc.target/mips/int-moves-1.c: Likewise. * gcc.target/mips/int-moves-2.c: Likewise. * gcc.target/mips/long-calls-pg.c: Likewise. * gcc.target/mips/loongson-muldiv-1.c: Likewise. * gcc.target/mips/loongson-muldiv-2.c: Likewise. * gcc.target/mips/loongson-shift-count-truncated-1.c: Likewise. * gcc.target/mips/loongson3a-muldiv-1.c: Likewise. * gcc.target/mips/loongson3a-muldiv-2.c: Likewise. * gcc.target/mips/mips-3d-1.c: Likewise. * gcc.target/mips/mips-3d-2.c: Likewise. * gcc.target/mips/mips-3d-3.c: Likewise. * gcc.target/mips/mips-3d-4.c: Likewise. * gcc.target/mips/mips-3d-5.c: Likewise. * gcc.target/mips/mips-3d-6.c: Likewise. * gcc.target/mips/mips-3d-7.c: Likewise. * gcc.target/mips/mips-3d-8.c: Likewise. * gcc.target/mips/mips-3d-9.c: Likewise. * gcc.target/mips/mips-ps-1.c: Likewise. * gcc.target/mips/mips-ps-2.c: Likewise. * gcc.target/mips/mips-ps-3.c: Likewise. * gcc.target/mips/mips-ps-4.c: Likewise. * gcc.target/mips/mips-ps-6.c: Likewise. * gcc.target/mips/mips32-dspr2.c: Likewise. * gcc.target/mips/mmcount-ra-address-1.c: Likewise. * gcc.target/mips/neg-abs-1.c: Likewise. * gcc.target/mips/neg-abs-2.c: Likewise. * gcc.target/mips/nmadd-3.c: Likewise. * gcc.target/mips/no-smartmips-lwxs.c: Likewise. * gcc.target/mips/no-smartmips-ror-1.c: Likewise. * gcc.target/mips/octeon-pop-1.c: Likewise. * gcc.target/mips/pr26765.c: Likewise. * gcc.target/mips/pr33256.c: Likewise. * gcc.target/mips/pr33635-1.c: Likewise. * gcc.target/mips/pr33755.c: Likewise. * gcc.target/mips/pr35802.c: Likewise. * gcc.target/mips/pr45074.c: Likewise. * gcc.target/mips/r10k-cache-barrier-1.c: Likewise. * gcc.target/mips/r10k-cache-barrier-2.c: Likewise. * gcc.target/mips/r10k-cache-barrier-3.c: Likewise. * gcc.target/mips/r10k-cache-barrier-4.c: Likewise. * gcc.target/mips/r10k-cache-barrier-5.c: Likewise. * gcc.target/mips/r10k-cache-barrier-6.c: Likewise. * gcc.target/mips/r10k-cache-barrier-7.c: Likewise. * gcc.target/mips/r10k-cache-barrier-8.c: Likewise. * gcc.target/mips/r10k-cache-barrier-9.c: Likewise. * gcc.target/mips/r10k-cache-barrier-11.c: Likewise. * gcc.target/mips/r10k-cache-barrier-12.c: Likewise. * gcc.target/mips/r10k-cache-barrier-13.c: Likewise. * gcc.target/mips/r10k-cache-barrier-14.c: Likewise. * gcc.target/mips/r10k-cache-barrier-15.c: Likewise. * gcc.target/mips/save-restore-1.c: Likewise. * gcc.target/mips/save-restore-3.c: Likewise. * gcc.target/mips/save-restore-5.c: Likewise. * gcc.target/mips/smartmips-ror-1.c: Likewise. * gcc.target/mips/smartmips-ror-2.c: Likewise. * gcc.target/mips/smartmips-ror-3.c: Likewise. * gcc.target/mips/smartmips-ror-4.c: Likewise. * gcc.target/mips/stack-1.c: Likewise. * gcc.target/mips/clear-cache-2.c: Remove optimization flag. Tighten regexps. * gcc.target/mips/branch-8.c: Arrange for the delay slot of the branch under test to be filled with preceding rather than following instructions. * gcc.target/mips/branch-10.c: Likewise. * gcc.target/mips/branch-11.c: Likewise. * gcc.target/mips/branch-12.c: Likewise. * gcc.target/mips/branch-13.c: Likewise. * gcc.target/mips/branch-9.c: Likewise. Allow the frame pointer to be eliminated. Tighten $28 scan-assembler-not test. * gcc.target/mips/call-2.c: Remove optimization flag. Move second function to... * gcc.target/mips/call-4.c: ...this new test. * gcc.target/mips/code-readable-2.c: Rework to make a jump table more likely. * gcc.target/mips/code-readable-3.c: Likewise. * gcc.target/mips/code-readable-1.c: Likewise. Remove optimization flag but skip for -O0. * gcc.target/mips/code-readable-4.c: Likewise. * gcc.target/mips/mips32-dsp-run.c: Prevent compile-time reduction of operations under test. * gcc.target/mips/mips32-dsp.c: Likewise. Remove optimization flag. * gcc.target/mips/near-far-3.c: Remove optimization flag. Don't require sibling-call optimization. * gcc.target/mips/near-far-4.c: Likewise. * gcc.target/mips/no-dsp-1.c: Require -ffat-lto-objects. Make sure that the register variable is used. * gcc.target/mips/soft-float-1.c: Likewise. * gcc.target/mips/sdata-1.c: Make static data volatile. * gcc.target/mips/sdata-2.c: Likewise. * gcc.target/mips/sdata-3.c: Likewise. * gcc.target/mips/sdata-4.c: Likewise. * gcc.target/mips/20020620-1.c: Remove optimization flag but skip for -O0. * gcc.target/mips/atomic-memory-2.c: Likewise. * gcc.target/mips/branch-cost-1.c: Likewise. * gcc.target/mips/branch-cost-2.c: Likewise. * gcc.target/mips/cache-1.c: Likewise. * gcc.target/mips/call-1.c: Likewise. * gcc.target/mips/call-saved-2.c: Likewise. * gcc.target/mips/const-anchor-1.c: Likewise. * gcc.target/mips/const-anchor-2.c: Likewise. * gcc.target/mips/dse-1.c: Likewise. * gcc.target/mips/dsp-lhx.c: Likewise. * gcc.target/mips/dspr2-MULTU.c: Likewise. * gcc.target/mips/ext-1.c: Likewise. * gcc.target/mips/ext-2.c: Likewise. * gcc.target/mips/ext-3.c: Likewise. * gcc.target/mips/ext-4.c: Likewise. * gcc.target/mips/ext-5.c: Likewise. * gcc.target/mips/ext-6.c: Likewise. * gcc.target/mips/ext-7.c: Likewise. * gcc.target/mips/extend-1.c: Likewise. * gcc.target/mips/fix-r4000-1.c: Likewise. * gcc.target/mips/fix-r4000-3.c: Likewise. * gcc.target/mips/fix-r4000-5.c: Likewise. * gcc.target/mips/fix-r4000-6.c: Likewise. * gcc.target/mips/fix-r4000-8.c: Likewise. * gcc.target/mips/fix-r4000-10.c: Likewise. * gcc.target/mips/fixed-scalar-type.c: Likewise. * gcc.target/mips/fixed-vector-type.c: Likewise. * gcc.target/mips/fpr-moves-1.c: Likewise. * gcc.target/mips/fpr-moves-2.c: Likewise. * gcc.target/mips/fpr-moves-3.c: Likewise. * gcc.target/mips/fpr-moves-4.c: Likewise. * gcc.target/mips/fpr-moves-5.c: Likewise. * gcc.target/mips/fpr-moves-6.c: Likewise. * gcc.target/mips/ins-1.c: Likewise. * gcc.target/mips/ins-2.c: Likewise. * gcc.target/mips/interrupt_handler-2.c: Likewise. * gcc.target/mips/interrupt_handler-3.c: Likewise. * gcc.target/mips/lazy-binding-1.c: Likewise. * gcc.target/mips/madd-3.c: Likewise. * gcc.target/mips/madd-5.c: Likewise. * gcc.target/mips/madd-6.c: Likewise. * gcc.target/mips/madd-8.c: Likewise. * gcc.target/mips/madd-9.c: Likewise. * gcc.target/mips/memcpy-1.c: Likewise. * gcc.target/mips/mips-ps-type.c: Likewise. * gcc.target/mips/mips-ps-type-2.c: Likewise. * gcc.target/mips/mips-sched-madd.c: Likewise. * gcc.target/mips/mips16e-extends.c: Likewise. * gcc.target/mips/mips32r2-mxhc1.c: Likewise. * gcc.target/mips/mips64-dsp-ldx.c: Likewise. * gcc.target/mips/movcc-1.c: Likewise. * gcc.target/mips/movcc-2.c: Likewise. * gcc.target/mips/movcc-3.c: Likewise. * gcc.target/mips/msub-5.c: Likewise. * gcc.target/mips/msub-6.c: Likewise. * gcc.target/mips/msub-8.c: Likewise. * gcc.target/mips/mult-2.c: Likewise. * gcc.target/mips/mult-3.c: Likewise. * gcc.target/mips/mult-5.c: Likewise. * gcc.target/mips/mult-6.c: Likewise. * gcc.target/mips/mult-7.c: Likewise. * gcc.target/mips/mult-12.c: Likewise. * gcc.target/mips/mult-13.c: Likewise. * gcc.target/mips/mult-14.c: Likewise. * gcc.target/mips/mult-15.c: Likewise. * gcc.target/mips/mult-17.c: Likewise. * gcc.target/mips/mult-18.c: Likewise. * gcc.target/mips/mult-19.c: Likewise. * gcc.target/mips/nmadd-1.c: Likewise. * gcc.target/mips/nmadd-2.c: Likewise. * gcc.target/mips/octeon-baddu-1.c: Likewise. * gcc.target/mips/octeon-cins-1.c: Likewise. * gcc.target/mips/octeon-cins-2.c: Likewise. * gcc.target/mips/octeon-dmul-3.c: Likewise. * gcc.target/mips/octeon-exts-2.c: Likewise. * gcc.target/mips/octeon-exts-3.c: Likewise. * gcc.target/mips/octeon-exts-4.c: Likewise. * gcc.target/mips/octeon-exts-5.c: Likewise. * gcc.target/mips/octeon-exts-6.c: Likewise. * gcc.target/mips/octeon-exts-7.c: Likewise. * gcc.target/mips/octeon-pop-2.c: Likewise. * gcc.target/mips/octeon-seq-3.c: Likewise. * gcc.target/mips/octeon-seq-4.c: Likewise. * gcc.target/mips/octeon2-lx-1.c: Likewise. * gcc.target/mips/octeon2-lx-2.c: Likewise. * gcc.target/mips/octeon2-lx-3.c: Likewise. * gcc.target/mips/pr54240.c: Likewise. * gcc.target/mips/rsqrt-1.c: Likewise. * gcc.target/mips/rsqrt-2.c: Likewise. * gcc.target/mips/rsqrt-3.c: Likewise. * gcc.target/mips/rsqrt-4.c: Likewise. * gcc.target/mips/save-restore-2.c: Likewise. * gcc.target/mips/save-restore-4.c: Likewise. * gcc.target/mips/sb1-1.c: Likewise. * gcc.target/mips/scc-1.c: Likewise. * gcc.target/mips/scc-2.c: Likewise. * gcc.target/mips/scc-3.c: Likewise. * gcc.target/mips/scc-4.c: Likewise. * gcc.target/mips/smartmips-lwxs.c: Likewise. * gcc.target/mips/truncate-1.c: Likewise. * gcc.target/mips/truncate-2.c: Likewise. * gcc.target/mips/truncate-3.c: Likewise. * gcc.target/mips/truncate-4.c: Likewise. * gcc.target/mips/truncate-5.c: Likewise. * gcc.target/mips/truncate-6.c: Likewise. * gcc.target/mips/unaligned-1.c: Likewise. * gcc.target/mips/dpaq_sa_l_w.c: Remove optimization flag but skip for -O0. Require -fexpensive-optimizations. * gcc.target/mips/dpsq_sa_l_w.c: Likewise. * gcc.target/mips/dspr2-MULT.c: Likewise. * gcc.target/mips/fix-r4000-2.c: Likewise. * gcc.target/mips/fix-r4000-4.c: Likewise. * gcc.target/mips/fix-r4000-7.c: Likewise. * gcc.target/mips/fix-r4000-9.c: Likewise. * gcc.target/mips/madd-1.c: Likewise. * gcc.target/mips/madd-2.c: Likewise. * gcc.target/mips/madd-4.c: Likewise. * gcc.target/mips/maddu-1.c: Likewise. * gcc.target/mips/maddu-2.c: Likewise. * gcc.target/mips/maddu-3.c: Likewise. * gcc.target/mips/maddu-4.c: Likewise. * gcc.target/mips/msub-1.c: Likewise. * gcc.target/mips/msub-2.c: Likewise. * gcc.target/mips/msub-3.c: Likewise. * gcc.target/mips/msub-4.c: Likewise. * gcc.target/mips/msubu-1.c: Likewise. * gcc.target/mips/msubu-2.c: Likewise. * gcc.target/mips/msubu-3.c: Likewise. * gcc.target/mips/msubu-4.c: Likewise. * gcc.target/mips/mult-1.c: Likewise. * gcc.target/mips/mult-4.c: Likewise. * gcc.target/mips/mult-8.c: Likewise. * gcc.target/mips/mult-9.c: Likewise. * gcc.target/mips/mult-10.c: Likewise. * gcc.target/mips/mult-11.c: Likewise. * gcc.target/mips/mult-16.c: Likewise. * gcc.target/mips/fix-r4000-11.c: Remove optimization flag but skip for -O0 and -Os. * gcc.target/mips/fix-r4000-12.c: Likewise. * gcc.target/mips/madd-7.c: Likewise. * gcc.target/mips/mips-ps-5.c: Likewise. * gcc.target/mips/mips-ps-7.c: Likewise. * gcc.target/mips/msub-7.c: Likewise. * gcc.target/mips/mmcount-ra-address-2.c: Remove optimization flag but skip for -O0. Require -mno-abicalls. * gcc.target/mips/mmcount-ra-address-3.c: Likewise. * gcc.target/mips/octeon-bbit-1.c: Remove optimization flag but skip for -O0. Require a total number of BBIT instructions and at least one of each kind. * gcc.target/mips/octeon-bbit-2.c: Remove optimization flag but skip for -O0. Require -fno-unroll-loops. * gcc.target/mips/octeon-bbit-3.c: Remove optimization flag but skip for -O0. Allow BLTZ as well as BGEZ. * gcc.target/mips/octeon-dmul-2.c: Skip for -Os. * gcc.target/mips/octeon-pipe-1.c: Remove optimization flag but skip for -O0. Require -fschedule-insns2. * gcc.target/mips/octeon2-pipe-1.c: Likewise. * gcc.target/mips/r10k-cache-barrier-10.c: Remove optimization flag but skip for -O0. Make a branch-likely more likely. * gcc.target/mips/timode-2.c: Split each test into its own function. * gcc.target/mips/timode-1.c: Likewise. Skip for -Os. * gcc.target/mips/vr-mult-1.c: Remove optimization flag but skip for -O0. Require -fpeephole2. * gcc.target/mips/vr-mult-2.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@190718 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/testsuite/ChangeLog352
-rw-r--r--gcc/testsuite/gcc.target/mips/20020620-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-eabi32-long32.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-eabi32-long64.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-eabi64-long32.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-eabi64-long64.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n32-long32-no-shared.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n32-long32-pic.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n32-long32.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n32-long64-no-shared.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n32-long64-pic.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n32-long64.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n64-long32-no-shared.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n64-long32-pic.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n64-long32.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n64-long64-no-shared.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n64-long64-pic.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-n64-long64.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o32-long32-no-shared.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o32-long32-pic.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o32-long32.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o32-long64-no-shared.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o32-long64-pic.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o32-long64.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o64-long32-no-shared.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o64-long32-pic.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o64-long32.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o64-long64-no-shared.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o64-long64-pic.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/abi-o64-long64.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/asm-1.c1
-rw-r--r--gcc/testsuite/gcc.target/mips/atomic-memory-2.c5
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-10.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-11.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-12.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-13.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-8.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-9.c8
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-cost-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-cost-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/cache-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/call-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/call-2.c12
-rw-r--r--gcc/testsuite/gcc.target/mips/call-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/call-4.c9
-rw-r--r--gcc/testsuite/gcc.target/mips/call-saved-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/call-saved-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/clear-cache-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/clear-cache-2.c6
-rw-r--r--gcc/testsuite/gcc.target/mips/code-readable-1.c27
-rw-r--r--gcc/testsuite/gcc.target/mips/code-readable-2.c24
-rw-r--r--gcc/testsuite/gcc.target/mips/code-readable-3.c24
-rw-r--r--gcc/testsuite/gcc.target/mips/code-readable-4.c27
-rw-r--r--gcc/testsuite/gcc.target/mips/const-anchor-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/const-anchor-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-10.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-11.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-12.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-4.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-5.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-6.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-7.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-8.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/div-9.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/dpaq_sa_l_w.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/dpsq_sa_l_w.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/dse-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/dsp-ctrl.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/dsp-lhx.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/dsp-no-lhx.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/dspr2-MULT.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/dspr2-MULTU.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/ext-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/ext-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/ext-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/ext-4.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/ext-5.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/ext-6.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/ext-7.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/ext-8.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/extend-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/extend-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-10.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-11.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-12.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-13.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-14.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-15.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-4.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-5.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-6.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-7.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-8.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r10000-9.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-10.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-11.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-12.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-2.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-4.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-5.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-6.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-7.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-8.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fix-r4000-9.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/fixed-scalar-type.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fixed-vector-type.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fpcmp-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fpcmp-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fpr-moves-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fpr-moves-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fpr-moves-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fpr-moves-4.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fpr-moves-5.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fpr-moves-6.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/fpr-moves-7.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/fpr-moves-8.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/ins-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/ins-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/int-moves-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/int-moves-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/interrupt_handler-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/interrupt_handler-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/lazy-binding-1.c5
-rw-r--r--gcc/testsuite/gcc.target/mips/long-calls-pg.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/loongson-muldiv-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/loongson-muldiv-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/loongson-shift-count-truncated-1.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/loongson3a-muldiv-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/loongson3a-muldiv-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-1.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-2.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-4.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-5.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-6.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-7.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-8.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-9.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/maddu-1.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/maddu-2.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/maddu-3.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/maddu-4.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/memcpy-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-3d-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-3d-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-3d-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-3d-4.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-3d-5.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-3d-6.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-3d-7.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-3d-8.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-3d-9.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-ps-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-ps-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-ps-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-ps-4.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-ps-5.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-ps-6.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-ps-7.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-ps-type-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-ps-type.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-sched-madd.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mips.exp20
-rw-r--r--gcc/testsuite/gcc.target/mips/mips16e-extends.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mips32-dsp-run.c8
-rw-r--r--gcc/testsuite/gcc.target/mips/mips32-dsp.c6
-rw-r--r--gcc/testsuite/gcc.target/mips/mips32-dspr2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips32r2-mxhc1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mips64-dsp-ldx.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mmcount-ra-address-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/mmcount-ra-address-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mmcount-ra-address-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/movcc-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/movcc-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/movcc-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/msub-1.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/msub-2.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/msub-3.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/msub-4.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/msub-5.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/msub-6.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/msub-7.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/msub-8.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/msubu-1.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/msubu-2.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/msubu-3.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/msubu-4.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-1.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-10.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-11.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-12.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-13.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-14.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-15.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-16.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-17.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-18.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-19.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-4.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-5.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-6.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-7.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-8.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/mult-9.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/near-far-3.c4
-rw-r--r--gcc/testsuite/gcc.target/mips/near-far-4.c6
-rw-r--r--gcc/testsuite/gcc.target/mips/neg-abs-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/neg-abs-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/nmadd-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/nmadd-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/nmadd-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/no-dsp-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/no-smartmips-lwxs.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/no-smartmips-ror-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-baddu-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-bbit-1.c8
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-bbit-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-bbit-3.c5
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-cins-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-cins-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-dmul-2.c1
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-dmul-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-exts-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-exts-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-exts-4.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-exts-5.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-exts-6.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-exts-7.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-pipe-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-pop-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-pop-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-seq-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon-seq-4.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon2-lx-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon2-lx-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon2-lx-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/octeon2-pipe-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/pr26765.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/pr33256.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/pr33635-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/pr33755.c1
-rw-r--r--gcc/testsuite/gcc.target/mips/pr35802.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/pr45074.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/pr54240.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-10.c12
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-11.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-12.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-13.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-14.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-15.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-4.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-5.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-6.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-7.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-8.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/r10k-cache-barrier-9.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/rsqrt-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/rsqrt-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/rsqrt-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/rsqrt-4.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/save-restore-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/save-restore-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/save-restore-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/save-restore-4.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/save-restore-5.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/sb1-1.c5
-rw-r--r--gcc/testsuite/gcc.target/mips/scc-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/scc-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/scc-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/scc-4.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/sdata-1.c12
-rw-r--r--gcc/testsuite/gcc.target/mips/sdata-2.c12
-rw-r--r--gcc/testsuite/gcc.target/mips/sdata-3.c12
-rw-r--r--gcc/testsuite/gcc.target/mips/sdata-4.c12
-rw-r--r--gcc/testsuite/gcc.target/mips/smartmips-lwxs.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/smartmips-ror-1.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/smartmips-ror-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/smartmips-ror-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/smartmips-ror-4.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/soft-float-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/stack-1.c1
-rw-r--r--gcc/testsuite/gcc.target/mips/timode-1.c45
-rw-r--r--gcc/testsuite/gcc.target/mips/timode-2.c57
-rw-r--r--gcc/testsuite/gcc.target/mips/truncate-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/truncate-2.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/truncate-3.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/truncate-4.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/truncate-5.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/truncate-6.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/unaligned-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/vr-mult-1.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/vr-mult-2.c3
306 files changed, 1078 insertions, 391 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d34a5c19882..aeebb09d5d6 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,355 @@
+2012-08-27 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * gcc.target/mips/mips.exp: Use gcc-dg-runtest rather than dg-runtest.
+ (mips_option_groups): Remove optimization. Add various -f options.
+ (mips-dg-options): Make -funroll-loops imply -funroll-all-loops
+ and -pg imply -fno-omit-frame-pointer.
+ * gcc.target/mips/abi-eabi32-long32.c: Remove optimization flag.
+ * gcc.target/mips/abi-eabi32-long64.c: Likewise.
+ * gcc.target/mips/abi-eabi64-long32.c: Likewise.
+ * gcc.target/mips/abi-eabi64-long64.c: Likewise.
+ * gcc.target/mips/abi-n32-long32-no-shared.c: Likewise.
+ * gcc.target/mips/abi-n32-long32-pic.c: Likewise.
+ * gcc.target/mips/abi-n32-long32.c: Likewise.
+ * gcc.target/mips/abi-n32-long64-no-shared.c: Likewise.
+ * gcc.target/mips/abi-n32-long64-pic.c: Likewise.
+ * gcc.target/mips/abi-n32-long64.c: Likewise.
+ * gcc.target/mips/abi-n64-long32-no-shared.c: Likewise.
+ * gcc.target/mips/abi-n64-long32-pic.c: Likewise.
+ * gcc.target/mips/abi-n64-long32.c: Likewise.
+ * gcc.target/mips/abi-n64-long64-no-shared.c: Likewise.
+ * gcc.target/mips/abi-n64-long64-pic.c: Likewise.
+ * gcc.target/mips/abi-n64-long64.c: Likewise.
+ * gcc.target/mips/abi-o32-long32-no-shared.c: Likewise.
+ * gcc.target/mips/abi-o32-long32-pic.c: Likewise.
+ * gcc.target/mips/abi-o32-long32.c: Likewise.
+ * gcc.target/mips/abi-o32-long64-no-shared.c: Likewise.
+ * gcc.target/mips/abi-o32-long64-pic.c: Likewise.
+ * gcc.target/mips/abi-o32-long64.c: Likewise.
+ * gcc.target/mips/abi-o64-long32-no-shared.c: Likewise.
+ * gcc.target/mips/abi-o64-long32-pic.c: Likewise.
+ * gcc.target/mips/abi-o64-long32.c: Likewise.
+ * gcc.target/mips/abi-o64-long64-no-shared.c: Likewise.
+ * gcc.target/mips/abi-o64-long64-pic.c: Likewise.
+ * gcc.target/mips/abi-o64-long64.c: Likewise.
+ * gcc.target/mips/asm-1.c: Likewise.
+ * gcc.target/mips/branch-1.c: Likewise.
+ * gcc.target/mips/call-3.c: Likewise.
+ * gcc.target/mips/call-saved-3.c: Likewise.
+ * gcc.target/mips/clear-cache-1.c: Likewise.
+ * gcc.target/mips/div-1.c: Likewise.
+ * gcc.target/mips/div-2.c: Likewise.
+ * gcc.target/mips/div-3.c: Likewise.
+ * gcc.target/mips/div-4.c: Likewise.
+ * gcc.target/mips/div-5.c: Likewise.
+ * gcc.target/mips/div-6.c: Likewise.
+ * gcc.target/mips/div-7.c: Likewise.
+ * gcc.target/mips/div-8.c: Likewise.
+ * gcc.target/mips/div-9.c: Likewise.
+ * gcc.target/mips/div-10.c: Likewise.
+ * gcc.target/mips/div-11.c: Likewise.
+ * gcc.target/mips/div-12.c: Likewise.
+ * gcc.target/mips/dsp-ctrl.c: Likewise.
+ * gcc.target/mips/dsp-no-lhx.c: Likewise.
+ * gcc.target/mips/ext-8.c: Likewise.
+ * gcc.target/mips/extend-2.c: Likewise.
+ * gcc.target/mips/fix-r10000-1.c: Likewise.
+ * gcc.target/mips/fix-r10000-2.c: Likewise.
+ * gcc.target/mips/fix-r10000-3.c: Likewise.
+ * gcc.target/mips/fix-r10000-4.c: Likewise.
+ * gcc.target/mips/fix-r10000-5.c: Likewise.
+ * gcc.target/mips/fix-r10000-6.c: Likewise.
+ * gcc.target/mips/fix-r10000-7.c: Likewise.
+ * gcc.target/mips/fix-r10000-8.c: Likewise.
+ * gcc.target/mips/fix-r10000-9.c: Likewise.
+ * gcc.target/mips/fix-r10000-10.c: Likewise.
+ * gcc.target/mips/fix-r10000-11.c: Likewise.
+ * gcc.target/mips/fix-r10000-12.c: Likewise.
+ * gcc.target/mips/fix-r10000-13.c: Likewise.
+ * gcc.target/mips/fix-r10000-14.c: Likewise.
+ * gcc.target/mips/fix-r10000-15.c: Likewise.
+ * gcc.target/mips/fpcmp-1.c: Likewise.
+ * gcc.target/mips/fpcmp-2.c: Likewise.
+ * gcc.target/mips/fpr-moves-7.c: Likewise.
+ * gcc.target/mips/fpr-moves-8.c: Likewise.
+ * gcc.target/mips/int-moves-1.c: Likewise.
+ * gcc.target/mips/int-moves-2.c: Likewise.
+ * gcc.target/mips/long-calls-pg.c: Likewise.
+ * gcc.target/mips/loongson-muldiv-1.c: Likewise.
+ * gcc.target/mips/loongson-muldiv-2.c: Likewise.
+ * gcc.target/mips/loongson-shift-count-truncated-1.c: Likewise.
+ * gcc.target/mips/loongson3a-muldiv-1.c: Likewise.
+ * gcc.target/mips/loongson3a-muldiv-2.c: Likewise.
+ * gcc.target/mips/mips-3d-1.c: Likewise.
+ * gcc.target/mips/mips-3d-2.c: Likewise.
+ * gcc.target/mips/mips-3d-3.c: Likewise.
+ * gcc.target/mips/mips-3d-4.c: Likewise.
+ * gcc.target/mips/mips-3d-5.c: Likewise.
+ * gcc.target/mips/mips-3d-6.c: Likewise.
+ * gcc.target/mips/mips-3d-7.c: Likewise.
+ * gcc.target/mips/mips-3d-8.c: Likewise.
+ * gcc.target/mips/mips-3d-9.c: Likewise.
+ * gcc.target/mips/mips-ps-1.c: Likewise.
+ * gcc.target/mips/mips-ps-2.c: Likewise.
+ * gcc.target/mips/mips-ps-3.c: Likewise.
+ * gcc.target/mips/mips-ps-4.c: Likewise.
+ * gcc.target/mips/mips-ps-6.c: Likewise.
+ * gcc.target/mips/mips32-dspr2.c: Likewise.
+ * gcc.target/mips/mmcount-ra-address-1.c: Likewise.
+ * gcc.target/mips/neg-abs-1.c: Likewise.
+ * gcc.target/mips/neg-abs-2.c: Likewise.
+ * gcc.target/mips/nmadd-3.c: Likewise.
+ * gcc.target/mips/no-smartmips-lwxs.c: Likewise.
+ * gcc.target/mips/no-smartmips-ror-1.c: Likewise.
+ * gcc.target/mips/octeon-pop-1.c: Likewise.
+ * gcc.target/mips/pr26765.c: Likewise.
+ * gcc.target/mips/pr33256.c: Likewise.
+ * gcc.target/mips/pr33635-1.c: Likewise.
+ * gcc.target/mips/pr33755.c: Likewise.
+ * gcc.target/mips/pr35802.c: Likewise.
+ * gcc.target/mips/pr45074.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-1.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-2.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-3.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-4.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-5.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-6.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-7.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-8.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-9.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-11.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-12.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-13.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-14.c: Likewise.
+ * gcc.target/mips/r10k-cache-barrier-15.c: Likewise.
+ * gcc.target/mips/save-restore-1.c: Likewise.
+ * gcc.target/mips/save-restore-3.c: Likewise.
+ * gcc.target/mips/save-restore-5.c: Likewise.
+ * gcc.target/mips/smartmips-ror-1.c: Likewise.
+ * gcc.target/mips/smartmips-ror-2.c: Likewise.
+ * gcc.target/mips/smartmips-ror-3.c: Likewise.
+ * gcc.target/mips/smartmips-ror-4.c: Likewise.
+ * gcc.target/mips/stack-1.c: Likewise.
+
+ * gcc.target/mips/clear-cache-2.c: Remove optimization flag.
+ Tighten regexps.
+
+ * gcc.target/mips/branch-8.c: Arrange for the delay slot of the
+ branch under test to be filled with preceding rather than
+ following instructions.
+ * gcc.target/mips/branch-10.c: Likewise.
+ * gcc.target/mips/branch-11.c: Likewise.
+ * gcc.target/mips/branch-12.c: Likewise.
+ * gcc.target/mips/branch-13.c: Likewise.
+ * gcc.target/mips/branch-9.c: Likewise. Allow the frame pointer
+ to be eliminated. Tighten $28 scan-assembler-not test.
+
+ * gcc.target/mips/call-2.c: Remove optimization flag. Move second
+ function to...
+ * gcc.target/mips/call-4.c: ...this new test.
+
+ * gcc.target/mips/code-readable-2.c: Rework to make a jump table
+ more likely.
+ * gcc.target/mips/code-readable-3.c: Likewise.
+ * gcc.target/mips/code-readable-1.c: Likewise. Remove optimization
+ flag but skip for -O0.
+ * gcc.target/mips/code-readable-4.c: Likewise.
+
+ * gcc.target/mips/mips32-dsp-run.c: Prevent compile-time reduction
+ of operations under test.
+ * gcc.target/mips/mips32-dsp.c: Likewise. Remove optimization flag.
+
+ * gcc.target/mips/near-far-3.c: Remove optimization flag.
+ Don't require sibling-call optimization.
+ * gcc.target/mips/near-far-4.c: Likewise.
+
+ * gcc.target/mips/no-dsp-1.c: Require -ffat-lto-objects.
+ Make sure that the register variable is used.
+ * gcc.target/mips/soft-float-1.c: Likewise.
+
+ * gcc.target/mips/sdata-1.c: Make static data volatile.
+ * gcc.target/mips/sdata-2.c: Likewise.
+ * gcc.target/mips/sdata-3.c: Likewise.
+ * gcc.target/mips/sdata-4.c: Likewise.
+
+ * gcc.target/mips/20020620-1.c: Remove optimization flag but
+ skip for -O0.
+ * gcc.target/mips/atomic-memory-2.c: Likewise.
+ * gcc.target/mips/branch-cost-1.c: Likewise.
+ * gcc.target/mips/branch-cost-2.c: Likewise.
+ * gcc.target/mips/cache-1.c: Likewise.
+ * gcc.target/mips/call-1.c: Likewise.
+ * gcc.target/mips/call-saved-2.c: Likewise.
+ * gcc.target/mips/const-anchor-1.c: Likewise.
+ * gcc.target/mips/const-anchor-2.c: Likewise.
+ * gcc.target/mips/dse-1.c: Likewise.
+ * gcc.target/mips/dsp-lhx.c: Likewise.
+ * gcc.target/mips/dspr2-MULTU.c: Likewise.
+ * gcc.target/mips/ext-1.c: Likewise.
+ * gcc.target/mips/ext-2.c: Likewise.
+ * gcc.target/mips/ext-3.c: Likewise.
+ * gcc.target/mips/ext-4.c: Likewise.
+ * gcc.target/mips/ext-5.c: Likewise.
+ * gcc.target/mips/ext-6.c: Likewise.
+ * gcc.target/mips/ext-7.c: Likewise.
+ * gcc.target/mips/extend-1.c: Likewise.
+ * gcc.target/mips/fix-r4000-1.c: Likewise.
+ * gcc.target/mips/fix-r4000-3.c: Likewise.
+ * gcc.target/mips/fix-r4000-5.c: Likewise.
+ * gcc.target/mips/fix-r4000-6.c: Likewise.
+ * gcc.target/mips/fix-r4000-8.c: Likewise.
+ * gcc.target/mips/fix-r4000-10.c: Likewise.
+ * gcc.target/mips/fixed-scalar-type.c: Likewise.
+ * gcc.target/mips/fixed-vector-type.c: Likewise.
+ * gcc.target/mips/fpr-moves-1.c: Likewise.
+ * gcc.target/mips/fpr-moves-2.c: Likewise.
+ * gcc.target/mips/fpr-moves-3.c: Likewise.
+ * gcc.target/mips/fpr-moves-4.c: Likewise.
+ * gcc.target/mips/fpr-moves-5.c: Likewise.
+ * gcc.target/mips/fpr-moves-6.c: Likewise.
+ * gcc.target/mips/ins-1.c: Likewise.
+ * gcc.target/mips/ins-2.c: Likewise.
+ * gcc.target/mips/interrupt_handler-2.c: Likewise.
+ * gcc.target/mips/interrupt_handler-3.c: Likewise.
+ * gcc.target/mips/lazy-binding-1.c: Likewise.
+ * gcc.target/mips/madd-3.c: Likewise.
+ * gcc.target/mips/madd-5.c: Likewise.
+ * gcc.target/mips/madd-6.c: Likewise.
+ * gcc.target/mips/madd-8.c: Likewise.
+ * gcc.target/mips/madd-9.c: Likewise.
+ * gcc.target/mips/memcpy-1.c: Likewise.
+ * gcc.target/mips/mips-ps-type.c: Likewise.
+ * gcc.target/mips/mips-ps-type-2.c: Likewise.
+ * gcc.target/mips/mips-sched-madd.c: Likewise.
+ * gcc.target/mips/mips16e-extends.c: Likewise.
+ * gcc.target/mips/mips32r2-mxhc1.c: Likewise.
+ * gcc.target/mips/mips64-dsp-ldx.c: Likewise.
+ * gcc.target/mips/movcc-1.c: Likewise.
+ * gcc.target/mips/movcc-2.c: Likewise.
+ * gcc.target/mips/movcc-3.c: Likewise.
+ * gcc.target/mips/msub-5.c: Likewise.
+ * gcc.target/mips/msub-6.c: Likewise.
+ * gcc.target/mips/msub-8.c: Likewise.
+ * gcc.target/mips/mult-2.c: Likewise.
+ * gcc.target/mips/mult-3.c: Likewise.
+ * gcc.target/mips/mult-5.c: Likewise.
+ * gcc.target/mips/mult-6.c: Likewise.
+ * gcc.target/mips/mult-7.c: Likewise.
+ * gcc.target/mips/mult-12.c: Likewise.
+ * gcc.target/mips/mult-13.c: Likewise.
+ * gcc.target/mips/mult-14.c: Likewise.
+ * gcc.target/mips/mult-15.c: Likewise.
+ * gcc.target/mips/mult-17.c: Likewise.
+ * gcc.target/mips/mult-18.c: Likewise.
+ * gcc.target/mips/mult-19.c: Likewise.
+ * gcc.target/mips/nmadd-1.c: Likewise.
+ * gcc.target/mips/nmadd-2.c: Likewise.
+ * gcc.target/mips/octeon-baddu-1.c: Likewise.
+ * gcc.target/mips/octeon-cins-1.c: Likewise.
+ * gcc.target/mips/octeon-cins-2.c: Likewise.
+ * gcc.target/mips/octeon-dmul-3.c: Likewise.
+ * gcc.target/mips/octeon-exts-2.c: Likewise.
+ * gcc.target/mips/octeon-exts-3.c: Likewise.
+ * gcc.target/mips/octeon-exts-4.c: Likewise.
+ * gcc.target/mips/octeon-exts-5.c: Likewise.
+ * gcc.target/mips/octeon-exts-6.c: Likewise.
+ * gcc.target/mips/octeon-exts-7.c: Likewise.
+ * gcc.target/mips/octeon-pop-2.c: Likewise.
+ * gcc.target/mips/octeon-seq-3.c: Likewise.
+ * gcc.target/mips/octeon-seq-4.c: Likewise.
+ * gcc.target/mips/octeon2-lx-1.c: Likewise.
+ * gcc.target/mips/octeon2-lx-2.c: Likewise.
+ * gcc.target/mips/octeon2-lx-3.c: Likewise.
+ * gcc.target/mips/pr54240.c: Likewise.
+ * gcc.target/mips/rsqrt-1.c: Likewise.
+ * gcc.target/mips/rsqrt-2.c: Likewise.
+ * gcc.target/mips/rsqrt-3.c: Likewise.
+ * gcc.target/mips/rsqrt-4.c: Likewise.
+ * gcc.target/mips/save-restore-2.c: Likewise.
+ * gcc.target/mips/save-restore-4.c: Likewise.
+ * gcc.target/mips/sb1-1.c: Likewise.
+ * gcc.target/mips/scc-1.c: Likewise.
+ * gcc.target/mips/scc-2.c: Likewise.
+ * gcc.target/mips/scc-3.c: Likewise.
+ * gcc.target/mips/scc-4.c: Likewise.
+ * gcc.target/mips/smartmips-lwxs.c: Likewise.
+ * gcc.target/mips/truncate-1.c: Likewise.
+ * gcc.target/mips/truncate-2.c: Likewise.
+ * gcc.target/mips/truncate-3.c: Likewise.
+ * gcc.target/mips/truncate-4.c: Likewise.
+ * gcc.target/mips/truncate-5.c: Likewise.
+ * gcc.target/mips/truncate-6.c: Likewise.
+ * gcc.target/mips/unaligned-1.c: Likewise.
+
+ * gcc.target/mips/dpaq_sa_l_w.c: Remove optimization flag but
+ skip for -O0. Require -fexpensive-optimizations.
+ * gcc.target/mips/dpsq_sa_l_w.c: Likewise.
+ * gcc.target/mips/dspr2-MULT.c: Likewise.
+ * gcc.target/mips/fix-r4000-2.c: Likewise.
+ * gcc.target/mips/fix-r4000-4.c: Likewise.
+ * gcc.target/mips/fix-r4000-7.c: Likewise.
+ * gcc.target/mips/fix-r4000-9.c: Likewise.
+ * gcc.target/mips/madd-1.c: Likewise.
+ * gcc.target/mips/madd-2.c: Likewise.
+ * gcc.target/mips/madd-4.c: Likewise.
+ * gcc.target/mips/maddu-1.c: Likewise.
+ * gcc.target/mips/maddu-2.c: Likewise.
+ * gcc.target/mips/maddu-3.c: Likewise.
+ * gcc.target/mips/maddu-4.c: Likewise.
+ * gcc.target/mips/msub-1.c: Likewise.
+ * gcc.target/mips/msub-2.c: Likewise.
+ * gcc.target/mips/msub-3.c: Likewise.
+ * gcc.target/mips/msub-4.c: Likewise.
+ * gcc.target/mips/msubu-1.c: Likewise.
+ * gcc.target/mips/msubu-2.c: Likewise.
+ * gcc.target/mips/msubu-3.c: Likewise.
+ * gcc.target/mips/msubu-4.c: Likewise.
+ * gcc.target/mips/mult-1.c: Likewise.
+ * gcc.target/mips/mult-4.c: Likewise.
+ * gcc.target/mips/mult-8.c: Likewise.
+ * gcc.target/mips/mult-9.c: Likewise.
+ * gcc.target/mips/mult-10.c: Likewise.
+ * gcc.target/mips/mult-11.c: Likewise.
+ * gcc.target/mips/mult-16.c: Likewise.
+
+ * gcc.target/mips/fix-r4000-11.c: Remove optimization flag but
+ skip for -O0 and -Os.
+ * gcc.target/mips/fix-r4000-12.c: Likewise.
+ * gcc.target/mips/madd-7.c: Likewise.
+ * gcc.target/mips/mips-ps-5.c: Likewise.
+ * gcc.target/mips/mips-ps-7.c: Likewise.
+ * gcc.target/mips/msub-7.c: Likewise.
+
+ * gcc.target/mips/mmcount-ra-address-2.c: Remove optimization flag but
+ skip for -O0. Require -mno-abicalls.
+ * gcc.target/mips/mmcount-ra-address-3.c: Likewise.
+
+ * gcc.target/mips/octeon-bbit-1.c: Remove optimization flag but
+ skip for -O0. Require a total number of BBIT instructions and
+ at least one of each kind.
+
+ * gcc.target/mips/octeon-bbit-2.c: Remove optimization flag but
+ skip for -O0. Require -fno-unroll-loops.
+
+ * gcc.target/mips/octeon-bbit-3.c: Remove optimization flag but
+ skip for -O0. Allow BLTZ as well as BGEZ.
+
+ * gcc.target/mips/octeon-dmul-2.c: Skip for -Os.
+
+ * gcc.target/mips/octeon-pipe-1.c: Remove optimization flag but
+ skip for -O0. Require -fschedule-insns2.
+ * gcc.target/mips/octeon2-pipe-1.c: Likewise.
+
+ * gcc.target/mips/r10k-cache-barrier-10.c: Remove optimization flag
+ but skip for -O0. Make a branch-likely more likely.
+
+ * gcc.target/mips/timode-2.c: Split each test into its own function.
+ * gcc.target/mips/timode-1.c: Likewise. Skip for -Os.
+
+ * gcc.target/mips/vr-mult-1.c: Remove optimization flag but
+ skip for -O0. Require -fpeephole2.
+ * gcc.target/mips/vr-mult-2.c: Likewise.
+
2012-05-25 Dodji Seketeli <dodji@redhat.com>
PR preprocessor/53469
diff --git a/gcc/testsuite/gcc.target/mips/20020620-1.c b/gcc/testsuite/gcc.target/mips/20020620-1.c
index 1f2affe48fc..8a70dd3b13c 100644
--- a/gcc/testsuite/gcc.target/mips/20020620-1.c
+++ b/gcc/testsuite/gcc.target/mips/20020620-1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mlong64" } */
+/* { dg-options "-mlong64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
int foo (int *x, int i)
{
return x[i] + i;
diff --git a/gcc/testsuite/gcc.target/mips/abi-eabi32-long32.c b/gcc/testsuite/gcc.target/mips/abi-eabi32-long32.c
index ebc5dd67240..75bd1b664be 100644
--- a/gcc/testsuite/gcc.target/mips/abi-eabi32-long32.c
+++ b/gcc/testsuite/gcc.target/mips/abi-eabi32-long32.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=eabi -mgp32 -mlong32 -O2" } */
+/* { dg-options "-mabi=eabi -mgp32 -mlong32" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-eabi32-long64.c b/gcc/testsuite/gcc.target/mips/abi-eabi32-long64.c
index 5a776eca988..1649433e633 100644
--- a/gcc/testsuite/gcc.target/mips/abi-eabi32-long64.c
+++ b/gcc/testsuite/gcc.target/mips/abi-eabi32-long64.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=eabi -mgp32 -mlong64 -O2" } */
+/* { dg-options "-mabi=eabi -mgp32 -mlong64" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-eabi64-long32.c b/gcc/testsuite/gcc.target/mips/abi-eabi64-long32.c
index 3882e48fa35..03d7c271836 100644
--- a/gcc/testsuite/gcc.target/mips/abi-eabi64-long32.c
+++ b/gcc/testsuite/gcc.target/mips/abi-eabi64-long32.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=eabi -mgp64 -mlong32 -O2" } */
+/* { dg-options "-mabi=eabi -mgp64 -mlong32" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-eabi64-long64.c b/gcc/testsuite/gcc.target/mips/abi-eabi64-long64.c
index 5569bf521e8..bb6fa17ac03 100644
--- a/gcc/testsuite/gcc.target/mips/abi-eabi64-long64.c
+++ b/gcc/testsuite/gcc.target/mips/abi-eabi64-long64.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=eabi -mgp64 -mlong64 -O2" } */
+/* { dg-options "-mabi=eabi -mgp64 -mlong64" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n32-long32-no-shared.c b/gcc/testsuite/gcc.target/mips/abi-n32-long32-no-shared.c
index 5cab4c97a62..11dfe2bc89d 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n32-long32-no-shared.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n32-long32-no-shared.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=n32 -mlong32 -mabicalls -mno-shared -mno-plt -O2" } */
+/* { dg-options "-mabi=n32 -mlong32 -mabicalls -mno-shared -mno-plt" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n32-long32-pic.c b/gcc/testsuite/gcc.target/mips/abi-n32-long32-pic.c
index eb455da96a8..ffbe62c48c5 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n32-long32-pic.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n32-long32-pic.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=n32 -mlong32 -fpic -O2" } */
+/* { dg-options "-mabi=n32 -mlong32 -fpic" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n32-long32.c b/gcc/testsuite/gcc.target/mips/abi-n32-long32.c
index 6a0f7023c9d..f6fa20d1203 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n32-long32.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n32-long32.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=n32 -mlong32 addressing=absolute -O2" } */
+/* { dg-options "-mabi=n32 -mlong32 addressing=absolute" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n32-long64-no-shared.c b/gcc/testsuite/gcc.target/mips/abi-n32-long64-no-shared.c
index 3edf86787cb..a30b573cb18 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n32-long64-no-shared.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n32-long64-no-shared.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=n32 -mlong64 -mabicalls -mno-shared -mno-plt -O2" } */
+/* { dg-options "-mabi=n32 -mlong64 -mabicalls -mno-shared -mno-plt" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n32-long64-pic.c b/gcc/testsuite/gcc.target/mips/abi-n32-long64-pic.c
index b444209e3b9..f9729a3dc4b 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n32-long64-pic.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n32-long64-pic.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=n32 -mlong64 -fpic -O2" } */
+/* { dg-options "-mabi=n32 -mlong64 -fpic" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n32-long64.c b/gcc/testsuite/gcc.target/mips/abi-n32-long64.c
index 868719c445f..b064bf5e926 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n32-long64.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n32-long64.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=n32 -mlong64 addressing=absolute -O2" } */
+/* { dg-options "-mabi=n32 -mlong64 addressing=absolute" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n64-long32-no-shared.c b/gcc/testsuite/gcc.target/mips/abi-n64-long32-no-shared.c
index b268d888a46..6a524091215 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n64-long32-no-shared.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n64-long32-no-shared.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=64 -mlong32 -mabicalls -mno-shared -mno-plt -O2" } */
+/* { dg-options "-mabi=64 -mlong32 -mabicalls -mno-shared -mno-plt" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n64-long32-pic.c b/gcc/testsuite/gcc.target/mips/abi-n64-long32-pic.c
index 5a0d9172651..6a5203e8c57 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n64-long32-pic.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n64-long32-pic.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=64 -mlong32 -fpic -O2" } */
+/* { dg-options "-mabi=64 -mlong32 -fpic" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n64-long32.c b/gcc/testsuite/gcc.target/mips/abi-n64-long32.c
index 4227169ec7e..d5f52d94ca5 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n64-long32.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n64-long32.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=64 -mlong32 addressing=absolute -O2" } */
+/* { dg-options "-mabi=64 -mlong32 addressing=absolute" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n64-long64-no-shared.c b/gcc/testsuite/gcc.target/mips/abi-n64-long64-no-shared.c
index 5301cfc5b73..113bbcc5a34 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n64-long64-no-shared.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n64-long64-no-shared.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=64 -mlong64 -mabicalls -mno-shared -mno-plt -O2" } */
+/* { dg-options "-mabi=64 -mlong64 -mabicalls -mno-shared -mno-plt" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n64-long64-pic.c b/gcc/testsuite/gcc.target/mips/abi-n64-long64-pic.c
index f43e9157bad..5f734687cfe 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n64-long64-pic.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n64-long64-pic.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=64 -mlong64 -fpic -O2" } */
+/* { dg-options "-mabi=64 -mlong64 -fpic" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-n64-long64.c b/gcc/testsuite/gcc.target/mips/abi-n64-long64.c
index a670fe5af91..19e6d91d2de 100644
--- a/gcc/testsuite/gcc.target/mips/abi-n64-long64.c
+++ b/gcc/testsuite/gcc.target/mips/abi-n64-long64.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=64 -mlong64 addressing=absolute -O2" } */
+/* { dg-options "-mabi=64 -mlong64 addressing=absolute" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o32-long32-no-shared.c b/gcc/testsuite/gcc.target/mips/abi-o32-long32-no-shared.c
index 2032b36d9d0..fb1b888d88e 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o32-long32-no-shared.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o32-long32-no-shared.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=32 -mlong32 -mabicalls -mno-shared -mno-plt -O2" } */
+/* { dg-options "-mabi=32 -mlong32 -mabicalls -mno-shared -mno-plt" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o32-long32-pic.c b/gcc/testsuite/gcc.target/mips/abi-o32-long32-pic.c
index 5a3e93effaf..64a7f585466 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o32-long32-pic.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o32-long32-pic.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=32 -mlong32 -fpic -O2" } */
+/* { dg-options "-mabi=32 -mlong32 -fpic" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o32-long32.c b/gcc/testsuite/gcc.target/mips/abi-o32-long32.c
index bdb9464c74a..790122077c7 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o32-long32.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o32-long32.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=32 -mlong32 addressing=absolute -O2" } */
+/* { dg-options "-mabi=32 -mlong32 addressing=absolute" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o32-long64-no-shared.c b/gcc/testsuite/gcc.target/mips/abi-o32-long64-no-shared.c
index 6340b63252b..2f28aeb61e5 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o32-long64-no-shared.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o32-long64-no-shared.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=32 -mlong64 -mabicalls -mno-shared -mno-plt -O2" } */
+/* { dg-options "-mabi=32 -mlong64 -mabicalls -mno-shared -mno-plt" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o32-long64-pic.c b/gcc/testsuite/gcc.target/mips/abi-o32-long64-pic.c
index 1583034b2a3..89cd9a20790 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o32-long64-pic.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o32-long64-pic.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=32 -mlong64 -fpic -O2" } */
+/* { dg-options "-mabi=32 -mlong64 -fpic" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o32-long64.c b/gcc/testsuite/gcc.target/mips/abi-o32-long64.c
index 4a88739b695..840e9aa130d 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o32-long64.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o32-long64.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=32 -mlong64 addressing=absolute -O2" } */
+/* { dg-options "-mabi=32 -mlong64 addressing=absolute" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o64-long32-no-shared.c b/gcc/testsuite/gcc.target/mips/abi-o64-long32-no-shared.c
index 548ae0d4a13..832550e45cb 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o64-long32-no-shared.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o64-long32-no-shared.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=o64 -mlong32 -mabicalls -mno-shared -mno-plt -O2" } */
+/* { dg-options "-mabi=o64 -mlong32 -mabicalls -mno-shared -mno-plt" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o64-long32-pic.c b/gcc/testsuite/gcc.target/mips/abi-o64-long32-pic.c
index 89d03ab6740..e06b8829293 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o64-long32-pic.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o64-long32-pic.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=o64 -mlong32 -fpic -O2" } */
+/* { dg-options "-mabi=o64 -mlong32 -fpic" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o64-long32.c b/gcc/testsuite/gcc.target/mips/abi-o64-long32.c
index db5893e4527..54ac2d707f3 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o64-long32.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o64-long32.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=o64 -mlong32 addressing=absolute -O2" } */
+/* { dg-options "-mabi=o64 -mlong32 addressing=absolute" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o64-long64-no-shared.c b/gcc/testsuite/gcc.target/mips/abi-o64-long64-no-shared.c
index df164b22f6c..94848f4e1be 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o64-long64-no-shared.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o64-long64-no-shared.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=o64 -mlong64 -mabicalls -mno-shared -mno-plt -O2" } */
+/* { dg-options "-mabi=o64 -mlong64 -mabicalls -mno-shared -mno-plt" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o64-long64-pic.c b/gcc/testsuite/gcc.target/mips/abi-o64-long64-pic.c
index df58d1f0285..8c2ca36d9f7 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o64-long64-pic.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o64-long64-pic.c
@@ -1,3 +1,3 @@
-/* { dg-options "-mabi=o64 -mlong64 -fpic -O2" } */
+/* { dg-options "-mabi=o64 -mlong64 -fpic" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/abi-o64-long64.c b/gcc/testsuite/gcc.target/mips/abi-o64-long64.c
index 43078f6809a..02633567ca2 100644
--- a/gcc/testsuite/gcc.target/mips/abi-o64-long64.c
+++ b/gcc/testsuite/gcc.target/mips/abi-o64-long64.c
@@ -1,2 +1,2 @@
-/* { dg-options "-mabi=o64 -mlong64 -mno-abicalls -O2" } */
+/* { dg-options "-mabi=o64 -mlong64 -mno-abicalls" } */
#include "abi-main.h"
diff --git a/gcc/testsuite/gcc.target/mips/asm-1.c b/gcc/testsuite/gcc.target/mips/asm-1.c
index 9f9cb3a3483..8df2689469e 100644
--- a/gcc/testsuite/gcc.target/mips/asm-1.c
+++ b/gcc/testsuite/gcc.target/mips/asm-1.c
@@ -1,7 +1,6 @@
/* PR target/17565. GCC used to put the asm into the delay slot
of the call. */
/* { dg-do assemble } */
-/* { dg-options "-O" } */
NOMIPS16 int foo (int n)
{
diff --git a/gcc/testsuite/gcc.target/mips/atomic-memory-2.c b/gcc/testsuite/gcc.target/mips/atomic-memory-2.c
index bc597ab2d2b..de17ec3c4b4 100644
--- a/gcc/testsuite/gcc.target/mips/atomic-memory-2.c
+++ b/gcc/testsuite/gcc.target/mips/atomic-memory-2.c
@@ -1,10 +1,11 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa>=2 -mabi=32" } */
+/* { dg-options "isa>=2 -mabi=32" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "addiu" } } */
/* { dg-final { scan-assembler-not "subu" } } */
NOMIPS16 unsigned long
f(unsigned long *p)
{
- return __sync_fetch_and_sub (p, 5);
+ return __sync_fetch_and_sub (p, 5);
}
diff --git a/gcc/testsuite/gcc.target/mips/branch-1.c b/gcc/testsuite/gcc.target/mips/branch-1.c
index 2f4510f8dd6..6ef50e8a187 100644
--- a/gcc/testsuite/gcc.target/mips/branch-1.c
+++ b/gcc/testsuite/gcc.target/mips/branch-1.c
@@ -2,7 +2,7 @@
but we test for "bbit" elsewhere. On other targets, we should implement
the "if" statements using an "andi" instruction followed by a branch
on zero. */
-/* { dg-options "-O2 forbid_cpu=octeon.*" } */
+/* { dg-options "forbid_cpu=octeon.*" } */
void bar (void);
NOMIPS16 void f1 (int x) { if (x & 4) bar (); }
diff --git a/gcc/testsuite/gcc.target/mips/branch-10.c b/gcc/testsuite/gcc.target/mips/branch-10.c
index 8186030e6e1..e2b1b5f6baa 100644
--- a/gcc/testsuite/gcc.target/mips/branch-10.c
+++ b/gcc/testsuite/gcc.target/mips/branch-10.c
@@ -5,9 +5,9 @@
#include "branch-helper.h"
NOMIPS16 void
-foo (void (*bar) (void), volatile int *x)
+foo (int (*bar) (void), int *x)
{
- bar ();
+ *x = bar ();
if (__builtin_expect (*x == 0, 1))
OCCUPY_0x1fff8;
}
diff --git a/gcc/testsuite/gcc.target/mips/branch-11.c b/gcc/testsuite/gcc.target/mips/branch-11.c
index a314740655d..962eb1b5d66 100644
--- a/gcc/testsuite/gcc.target/mips/branch-11.c
+++ b/gcc/testsuite/gcc.target/mips/branch-11.c
@@ -9,9 +9,9 @@
#include "branch-helper.h"
NOMIPS16 void
-foo (void (*bar) (void), volatile int *x)
+foo (int (*bar) (void), int *x)
{
- bar ();
+ *x = bar ();
if (__builtin_expect (*x == 0, 1))
OCCUPY_0x1fffc;
}
diff --git a/gcc/testsuite/gcc.target/mips/branch-12.c b/gcc/testsuite/gcc.target/mips/branch-12.c
index 3e5b421cf87..4aef160ade8 100644
--- a/gcc/testsuite/gcc.target/mips/branch-12.c
+++ b/gcc/testsuite/gcc.target/mips/branch-12.c
@@ -5,9 +5,9 @@
#include "branch-helper.h"
NOMIPS16 void
-foo (void (*bar) (void), volatile int *x)
+foo (int (*bar) (void), int *x)
{
- bar ();
+ *x = bar ();
if (__builtin_expect (*x == 0, 1))
OCCUPY_0x1fff8;
}
diff --git a/gcc/testsuite/gcc.target/mips/branch-13.c b/gcc/testsuite/gcc.target/mips/branch-13.c
index 9bd94146a6f..8a6fb049f24 100644
--- a/gcc/testsuite/gcc.target/mips/branch-13.c
+++ b/gcc/testsuite/gcc.target/mips/branch-13.c
@@ -9,9 +9,9 @@
#include "branch-helper.h"
NOMIPS16 void
-foo (void (*bar) (void), volatile int *x)
+foo (int (*bar) (void), int *x)
{
- bar ();
+ *x = bar ();
if (__builtin_expect (*x == 0, 1))
OCCUPY_0x1fffc;
}
diff --git a/gcc/testsuite/gcc.target/mips/branch-8.c b/gcc/testsuite/gcc.target/mips/branch-8.c
index 4595feafa61..ba5f954378c 100644
--- a/gcc/testsuite/gcc.target/mips/branch-8.c
+++ b/gcc/testsuite/gcc.target/mips/branch-8.c
@@ -5,9 +5,9 @@
#include "branch-helper.h"
NOMIPS16 void
-foo (void (*bar) (void), volatile int *x)
+foo (int (*bar) (void), int *x)
{
- bar ();
+ *x = bar ();
if (__builtin_expect (*x == 0, 1))
OCCUPY_0x1fff8;
}
diff --git a/gcc/testsuite/gcc.target/mips/branch-9.c b/gcc/testsuite/gcc.target/mips/branch-9.c
index 417507cc48e..cad1c003c3e 100644
--- a/gcc/testsuite/gcc.target/mips/branch-9.c
+++ b/gcc/testsuite/gcc.target/mips/branch-9.c
@@ -1,18 +1,18 @@
/* { dg-options "-mshared -mabi=32" } */
/* { dg-final { scan-assembler "\t\\.cpload\t\\\$25\n" } } */
/* { dg-final { scan-assembler "\t\\.cprestore\t16\n" } } */
-/* { dg-final { scan-assembler "\tlw\t\\\$1,16\\(\\\$fp\\)\n" } } */
+/* { dg-final { scan-assembler "\tlw\t\\\$1,16\\(\\\$(fp|sp)\\)\n" } } */
/* { dg-final { scan-assembler "\tlw\t\\\$1,%got\\(\[^)\]*\\)\\(\\\$1\\)\n" } } */
/* { dg-final { scan-assembler "\taddiu\t\\\$1,\\\$1,%lo\\(\[^)\]*\\)\n" } } */
/* { dg-final { scan-assembler "\tjr\t\\\$1\n" } } */
-/* { dg-final { scan-assembler-not "\tlw\t\\\$28,16\\(\\\$sp\\)\n" } } */
+/* { dg-final { scan-assembler-not "\\\$28" } } */
#include "branch-helper.h"
NOMIPS16 void
-foo (void (*bar) (void), volatile int *x)
+foo (int (*bar) (void), int *x)
{
- bar ();
+ *x = bar ();
if (__builtin_expect (*x == 0, 1))
OCCUPY_0x1fffc;
}
diff --git a/gcc/testsuite/gcc.target/mips/branch-cost-1.c b/gcc/testsuite/gcc.target/mips/branch-cost-1.c
index d825e06176e..f72f2acfb3a 100644
--- a/gcc/testsuite/gcc.target/mips/branch-cost-1.c
+++ b/gcc/testsuite/gcc.target/mips/branch-cost-1.c
@@ -1,4 +1,5 @@
-/* { dg-options "-mbranch-cost=1 isa>=4 -O2" } */
+/* { dg-options "-mbranch-cost=1 isa>=4" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 int
foo (int x, int y, int z, int k)
{
diff --git a/gcc/testsuite/gcc.target/mips/branch-cost-2.c b/gcc/testsuite/gcc.target/mips/branch-cost-2.c
index 23f528ad63f..3b2c4a13e5e 100644
--- a/gcc/testsuite/gcc.target/mips/branch-cost-2.c
+++ b/gcc/testsuite/gcc.target/mips/branch-cost-2.c
@@ -1,4 +1,5 @@
-/* { dg-options "-mbranch-cost=10 isa>=4 -O2" } */
+/* { dg-options "-mbranch-cost=10 isa>=4" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 int
foo (int x, int y, int z, int k)
{
diff --git a/gcc/testsuite/gcc.target/mips/cache-1.c b/gcc/testsuite/gcc.target/mips/cache-1.c
index da897066d49..f5c3dd307d8 100644
--- a/gcc/testsuite/gcc.target/mips/cache-1.c
+++ b/gcc/testsuite/gcc.target/mips/cache-1.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O2 isa>=3" } */
+/* { dg-options "isa>=3" } */
+/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 void
f1 (int *area)
diff --git a/gcc/testsuite/gcc.target/mips/call-1.c b/gcc/testsuite/gcc.target/mips/call-1.c
index 7dceefaa3d2..a9c97c329e4 100644
--- a/gcc/testsuite/gcc.target/mips/call-1.c
+++ b/gcc/testsuite/gcc.target/mips/call-1.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O2 -mrelax-pic-calls -mshared" } */
+/* { dg-options "-mrelax-pic-calls -mshared -foptimize-sibling-calls" } */
+/* { dg-skip-if "requires -foptimize-sibling-calls" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\\.reloc\t1f,R_MIPS_JALR,normal\n1:\tjalr\t" } } */
/* { dg-final { scan-assembler "\\.reloc\t1f,R_MIPS_JALR,normal2\n1:\tjalr\t" } } */
/* { dg-final { scan-assembler "\\.reloc\t1f,R_MIPS_JALR,staticfunc\n1:\tjalr\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/call-2.c b/gcc/testsuite/gcc.target/mips/call-2.c
index 8e749919031..7fabb1fd970 100644
--- a/gcc/testsuite/gcc.target/mips/call-2.c
+++ b/gcc/testsuite/gcc.target/mips/call-2.c
@@ -1,14 +1,8 @@
/* See through some simple data-flow. */
-/* { dg-options "-O2 -mrelax-pic-calls" } */
-/* { dg-final { scan-assembler-times "\\.reloc\t1f,R_MIPS_JALR,g\n1:\tjalr\t" 3 } } */
+/* { dg-options "-mrelax-pic-calls" } */
+/* { dg-final { scan-assembler-times "\\.reloc\t1f,R_MIPS_JALR,g\n1:\tjalr\t" 2 } } */
-NOMIPS16 f (int i)
-{
- while (i--)
- g ();
-}
-
-NOMIPS16 ff ()
+NOMIPS16 f ()
{
g ();
g ();
diff --git a/gcc/testsuite/gcc.target/mips/call-3.c b/gcc/testsuite/gcc.target/mips/call-3.c
index 25f01d2a901..2c564886b1d 100644
--- a/gcc/testsuite/gcc.target/mips/call-3.c
+++ b/gcc/testsuite/gcc.target/mips/call-3.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mrelax-pic-calls -mno-shared" } */
+/* { dg-options "-mrelax-pic-calls -mno-shared" } */
/* { dg-final { scan-assembler "\\.reloc\t1f,R_MIPS_JALR,g\n1:\tjalr\t" } } */
/* { dg-require-visibility "" } */
diff --git a/gcc/testsuite/gcc.target/mips/call-4.c b/gcc/testsuite/gcc.target/mips/call-4.c
new file mode 100644
index 00000000000..049e33882fa
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/call-4.c
@@ -0,0 +1,9 @@
+/* See through some simple data-flow. */
+/* { dg-options "-mrelax-pic-calls" } */
+/* { dg-final { scan-assembler "\\.reloc\t1f,R_MIPS_JALR,g\n1:\tjalr\t" } } */
+
+NOMIPS16 f (int i)
+{
+ while (i--)
+ g ();
+}
diff --git a/gcc/testsuite/gcc.target/mips/call-saved-2.c b/gcc/testsuite/gcc.target/mips/call-saved-2.c
index 9ac7a2735ad..b55c30ab062 100644
--- a/gcc/testsuite/gcc.target/mips/call-saved-2.c
+++ b/gcc/testsuite/gcc.target/mips/call-saved-2.c
@@ -1,5 +1,6 @@
/* Check that we save non-MIPS16 GPRs if they are explicitly clobbered. */
-/* { dg-options "(-mips16) isa_rev=0 -O2" } */
+/* { dg-options "(-mips16) isa_rev=0" } */
+/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
MIPS16 void
foo (void)
diff --git a/gcc/testsuite/gcc.target/mips/call-saved-3.c b/gcc/testsuite/gcc.target/mips/call-saved-3.c
index e178eb0f061..84cdb3b8898 100644
--- a/gcc/testsuite/gcc.target/mips/call-saved-3.c
+++ b/gcc/testsuite/gcc.target/mips/call-saved-3.c
@@ -1,6 +1,6 @@
/* Check that we save all call-saved GPRs in a MIPS16 __builtin_setjmp
function. */
-/* { dg-options "(-mips16) isa_rev=0 -O2" } */
+/* { dg-options "(-mips16) isa_rev=0" } */
void bar (void);
extern int buf[];
diff --git a/gcc/testsuite/gcc.target/mips/clear-cache-1.c b/gcc/testsuite/gcc.target/mips/clear-cache-1.c
index 2925d98dd07..302aec3f1f5 100644
--- a/gcc/testsuite/gcc.target/mips/clear-cache-1.c
+++ b/gcc/testsuite/gcc.target/mips/clear-cache-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -msynci isa_rev>=2" } */
+/* { dg-options "-msynci isa_rev>=2" } */
/* { dg-final { scan-assembler "synci" } } */
/* { dg-final { scan-assembler "jr.hb" } } */
/* { dg-final { scan-assembler-not "_flush_cache|mips_sync_icache|_cacheflush" } } */
diff --git a/gcc/testsuite/gcc.target/mips/clear-cache-2.c b/gcc/testsuite/gcc.target/mips/clear-cache-2.c
index be2e2218bbe..f1f7f819099 100644
--- a/gcc/testsuite/gcc.target/mips/clear-cache-2.c
+++ b/gcc/testsuite/gcc.target/mips/clear-cache-2.c
@@ -1,7 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mips32" } */
-/* { dg-final { scan-assembler-not "synci" } } */
-/* { dg-final { scan-assembler-not "jr.hb" } } */
+/* { dg-options "-mips32" } */
+/* { dg-final { scan-assembler-not "\tsynci" } } */
+/* { dg-final { scan-assembler-not "\tjr.hb" } } */
/* { dg-final { scan-assembler "_flush_cache|mips_sync_icache|_cacheflush" } } */
void f()
diff --git a/gcc/testsuite/gcc.target/mips/code-readable-1.c b/gcc/testsuite/gcc.target/mips/code-readable-1.c
index c35d60c8b1e..34c2c0a770a 100644
--- a/gcc/testsuite/gcc.target/mips/code-readable-1.c
+++ b/gcc/testsuite/gcc.target/mips/code-readable-1.c
@@ -1,17 +1,26 @@
-/* { dg-options "(-mips16) -mcode-readable=yes -mgp32 addressing=absolute -O" } */
+/* { dg-options "(-mips16) -mcode-readable=yes -mgp32 addressing=absolute" } */
+/* { dg-skip-if ".half requires -O" { *-*-* } { "-O0" } { "" } } */
+
+volatile int x1;
+volatile int x2;
+volatile int x3;
+volatile int x4;
+volatile int x5;
+volatile int x6;
+volatile int x7;
MIPS16 int
-foo (int i)
+foo (int i, volatile *x)
{
switch (i)
{
- case 1: return 40;
- case 2: return 11;
- case 3: return 29;
- case 4: return 10;
- case 5: return 12;
- case 6: return 35;
- case 7: return 23;
+ case 1: return x1 + x[0];
+ case 2: return x2 + x[1];
+ case 3: return x3 + x[2];
+ case 4: return x4 + x[3];
+ case 5: return x5 + x[4];
+ case 6: return x6 + x[5];
+ case 7: return x7 + x[6];
default: return 0;
}
}
diff --git a/gcc/testsuite/gcc.target/mips/code-readable-2.c b/gcc/testsuite/gcc.target/mips/code-readable-2.c
index e0176c3dbd5..71aeb132c0c 100644
--- a/gcc/testsuite/gcc.target/mips/code-readable-2.c
+++ b/gcc/testsuite/gcc.target/mips/code-readable-2.c
@@ -1,17 +1,25 @@
/* { dg-options "(-mips16) -mcode-readable=pcrel -mgp32 addressing=absolute" } */
+volatile int x1;
+volatile int x2;
+volatile int x3;
+volatile int x4;
+volatile int x5;
+volatile int x6;
+volatile int x7;
+
MIPS16 int
-foo (int i)
+foo (int i, volatile *x)
{
switch (i)
{
- case 1: return 40;
- case 2: return 11;
- case 3: return 29;
- case 4: return 10;
- case 5: return 12;
- case 6: return 35;
- case 7: return 23;
+ case 1: return x1 + x[0];
+ case 2: return x2 + x[1];
+ case 3: return x3 + x[2];
+ case 4: return x4 + x[3];
+ case 5: return x5 + x[4];
+ case 6: return x6 + x[5];
+ case 7: return x7 + x[6];
default: return 0;
}
}
diff --git a/gcc/testsuite/gcc.target/mips/code-readable-3.c b/gcc/testsuite/gcc.target/mips/code-readable-3.c
index 075ca8d1749..fc785055196 100644
--- a/gcc/testsuite/gcc.target/mips/code-readable-3.c
+++ b/gcc/testsuite/gcc.target/mips/code-readable-3.c
@@ -1,17 +1,25 @@
/* { dg-options "(-mips16) -mcode-readable=no -mgp32 addressing=absolute" } */
+volatile int x1;
+volatile int x2;
+volatile int x3;
+volatile int x4;
+volatile int x5;
+volatile int x6;
+volatile int x7;
+
MIPS16 int
-foo (int i)
+foo (int i, volatile *x)
{
switch (i)
{
- case 1: return 40;
- case 2: return 11;
- case 3: return 29;
- case 4: return 10;
- case 5: return 12;
- case 6: return 35;
- case 7: return 23;
+ case 1: return x1 + x[0];
+ case 2: return x2 + x[1];
+ case 3: return x3 + x[2];
+ case 4: return x4 + x[3];
+ case 5: return x5 + x[4];
+ case 6: return x6 + x[5];
+ case 7: return x7 + x[6];
default: return 0;
}
}
diff --git a/gcc/testsuite/gcc.target/mips/code-readable-4.c b/gcc/testsuite/gcc.target/mips/code-readable-4.c
index d29216f6de1..ae8ff8a1a66 100644
--- a/gcc/testsuite/gcc.target/mips/code-readable-4.c
+++ b/gcc/testsuite/gcc.target/mips/code-readable-4.c
@@ -1,17 +1,26 @@
-/* { dg-options "(-mips16) -mcode-readable=yes -mabi=eabi -mgp64 -O" } */
+/* { dg-options "(-mips16) -mcode-readable=yes -mabi=eabi -mgp64" } */
+/* { dg-skip-if ".half requires -O" { *-*-* } { "-O0" } { "" } } */
+
+volatile int x1;
+volatile int x2;
+volatile int x3;
+volatile int x4;
+volatile int x5;
+volatile int x6;
+volatile int x7;
MIPS16 int
-foo (int i)
+foo (int i, volatile *x)
{
switch (i)
{
- case 1: return 40;
- case 2: return 11;
- case 3: return 29;
- case 4: return 10;
- case 5: return 12;
- case 6: return 35;
- case 7: return 23;
+ case 1: return x1 + x[0];
+ case 2: return x2 + x[1];
+ case 3: return x3 + x[2];
+ case 4: return x4 + x[3];
+ case 5: return x5 + x[4];
+ case 6: return x6 + x[5];
+ case 7: return x7 + x[6];
default: return 0;
}
}
diff --git a/gcc/testsuite/gcc.target/mips/const-anchor-1.c b/gcc/testsuite/gcc.target/mips/const-anchor-1.c
index 66981671d02..2f493d09c42 100644
--- a/gcc/testsuite/gcc.target/mips/const-anchor-1.c
+++ b/gcc/testsuite/gcc.target/mips/const-anchor-1.c
@@ -1,6 +1,6 @@
/* Derive a constant (0x1233ffff) from an intermediate value
(0x1234000) used to build another constant. */
-/* { dg-options "-O" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "0x12330000|305332224" } } */
/* { dg-final { scan-assembler "addiu\t\\\$5,\\\$\[0-9\]*,-1" } } */
diff --git a/gcc/testsuite/gcc.target/mips/const-anchor-2.c b/gcc/testsuite/gcc.target/mips/const-anchor-2.c
index ccb89bb766c..8666edf303e 100644
--- a/gcc/testsuite/gcc.target/mips/const-anchor-2.c
+++ b/gcc/testsuite/gcc.target/mips/const-anchor-2.c
@@ -1,5 +1,5 @@
/* Derive a constant (0x30001) from another constant. */
-/* { dg-options "-O" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "0x300000|196608" } } */
/* { dg-final { scan-assembler "addiu\t\\\$5,\\\$\[0-9\]*,32763" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-1.c b/gcc/testsuite/gcc.target/mips/div-1.c
index e1976c25e0d..08234a6e1b1 100644
--- a/gcc/testsuite/gcc.target/mips/div-1.c
+++ b/gcc/testsuite/gcc.target/mips/div-1.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tddiv\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-10.c b/gcc/testsuite/gcc.target/mips/div-10.c
index 23075da2c3d..fb8953def4d 100644
--- a/gcc/testsuite/gcc.target/mips/div-10.c
+++ b/gcc/testsuite/gcc.target/mips/div-10.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdivu\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-11.c b/gcc/testsuite/gcc.target/mips/div-11.c
index 68f1658484b..ff129292a34 100644
--- a/gcc/testsuite/gcc.target/mips/div-11.c
+++ b/gcc/testsuite/gcc.target/mips/div-11.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdiv\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-12.c b/gcc/testsuite/gcc.target/mips/div-12.c
index c2384b20a9d..57866ceb021 100644
--- a/gcc/testsuite/gcc.target/mips/div-12.c
+++ b/gcc/testsuite/gcc.target/mips/div-12.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdivu\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-2.c b/gcc/testsuite/gcc.target/mips/div-2.c
index af6e2fa8e1a..257ca923d05 100644
--- a/gcc/testsuite/gcc.target/mips/div-2.c
+++ b/gcc/testsuite/gcc.target/mips/div-2.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tddivu\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-3.c b/gcc/testsuite/gcc.target/mips/div-3.c
index 684b6a8e441..b9ae3684ef4 100644
--- a/gcc/testsuite/gcc.target/mips/div-3.c
+++ b/gcc/testsuite/gcc.target/mips/div-3.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tddiv\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-4.c b/gcc/testsuite/gcc.target/mips/div-4.c
index 251b88f8164..5f05d8e78ee 100644
--- a/gcc/testsuite/gcc.target/mips/div-4.c
+++ b/gcc/testsuite/gcc.target/mips/div-4.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tddivu\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-5.c b/gcc/testsuite/gcc.target/mips/div-5.c
index a08f3e6f4bd..294cc7f24ac 100644
--- a/gcc/testsuite/gcc.target/mips/div-5.c
+++ b/gcc/testsuite/gcc.target/mips/div-5.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdiv\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-6.c b/gcc/testsuite/gcc.target/mips/div-6.c
index 23075da2c3d..fb8953def4d 100644
--- a/gcc/testsuite/gcc.target/mips/div-6.c
+++ b/gcc/testsuite/gcc.target/mips/div-6.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdivu\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-7.c b/gcc/testsuite/gcc.target/mips/div-7.c
index 68f1658484b..ff129292a34 100644
--- a/gcc/testsuite/gcc.target/mips/div-7.c
+++ b/gcc/testsuite/gcc.target/mips/div-7.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdiv\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-8.c b/gcc/testsuite/gcc.target/mips/div-8.c
index c2384b20a9d..57866ceb021 100644
--- a/gcc/testsuite/gcc.target/mips/div-8.c
+++ b/gcc/testsuite/gcc.target/mips/div-8.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdivu\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/div-9.c b/gcc/testsuite/gcc.target/mips/div-9.c
index a08f3e6f4bd..294cc7f24ac 100644
--- a/gcc/testsuite/gcc.target/mips/div-9.c
+++ b/gcc/testsuite/gcc.target/mips/div-9.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdiv\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/dpaq_sa_l_w.c b/gcc/testsuite/gcc.target/mips/dpaq_sa_l_w.c
index 87d1da98cb5..a48f561f320 100644
--- a/gcc/testsuite/gcc.target/mips/dpaq_sa_l_w.c
+++ b/gcc/testsuite/gcc.target/mips/dpaq_sa_l_w.c
@@ -1,5 +1,7 @@
/* { dg-do compile { target { fixed_point } } } */
-/* { dg-options "-O2 -mgp32 -mdsp" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp32 -mdsp -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tdpaq_sa.l.w\t\\\$ac" 3 } } */
NOMIPS16 _Sat long long _Fract
diff --git a/gcc/testsuite/gcc.target/mips/dpsq_sa_l_w.c b/gcc/testsuite/gcc.target/mips/dpsq_sa_l_w.c
index 9aeb5667acf..fb63a1db80a 100644
--- a/gcc/testsuite/gcc.target/mips/dpsq_sa_l_w.c
+++ b/gcc/testsuite/gcc.target/mips/dpsq_sa_l_w.c
@@ -1,5 +1,7 @@
/* { dg-do compile { target { fixed_point } } } */
-/* { dg-options "-O2 -mgp32 -mdsp" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp32 -mdsp -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tdpsq_sa.l.w\t\\\$ac" 2 } } */
NOMIPS16 _Sat long long _Fract
diff --git a/gcc/testsuite/gcc.target/mips/dse-1.c b/gcc/testsuite/gcc.target/mips/dse-1.c
index 6ef55cde25e..e53189cadd8 100644
--- a/gcc/testsuite/gcc.target/mips/dse-1.c
+++ b/gcc/testsuite/gcc.target/mips/dse-1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-mgp64 -O" } */
+/* { dg-options "-mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
#define TEST(ID, TYPE1, TYPE2) \
union u##ID { \
diff --git a/gcc/testsuite/gcc.target/mips/dsp-ctrl.c b/gcc/testsuite/gcc.target/mips/dsp-ctrl.c
index bb89e84f239..4bf449b86ca 100644
--- a/gcc/testsuite/gcc.target/mips/dsp-ctrl.c
+++ b/gcc/testsuite/gcc.target/mips/dsp-ctrl.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mdsp -mgp32" } */
+/* { dg-options "-mdsp -mgp32" } */
extern void abort (void);
extern void exit (int);
diff --git a/gcc/testsuite/gcc.target/mips/dsp-lhx.c b/gcc/testsuite/gcc.target/mips/dsp-lhx.c
index 416356f2a03..8fa20a09090 100644
--- a/gcc/testsuite/gcc.target/mips/dsp-lhx.c
+++ b/gcc/testsuite/gcc.target/mips/dsp-lhx.c
@@ -1,6 +1,7 @@
/* Test MIPS32 DSP LHX instruction */
/* { dg-do compile } */
-/* { dg-options "-mgp32 -mdsp -O2" } */
+/* { dg-options "-mgp32 -mdsp" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tlhx\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/dsp-no-lhx.c b/gcc/testsuite/gcc.target/mips/dsp-no-lhx.c
index a37c42f1a90..42c4688cd0f 100644
--- a/gcc/testsuite/gcc.target/mips/dsp-no-lhx.c
+++ b/gcc/testsuite/gcc.target/mips/dsp-no-lhx.c
@@ -1,6 +1,6 @@
/* Test MIPS32 DSP LHX instruction */
/* { dg-do compile } */
-/* { dg-options "-mgp32 -mdsp -O2" } */
+/* { dg-options "-mgp32 -mdsp" } */
/* { dg-final { scan-assembler-not "\tlhx\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/dspr2-MULT.c b/gcc/testsuite/gcc.target/mips/dspr2-MULT.c
index c685974895d..7c611a3266b 100644
--- a/gcc/testsuite/gcc.target/mips/dspr2-MULT.c
+++ b/gcc/testsuite/gcc.target/mips/dspr2-MULT.c
@@ -1,7 +1,9 @@
/* Test MIPS32 DSP REV 2 MULT instruction. Tune for a CPU that has
pipelined mult. */
/* { dg-do compile } */
-/* { dg-options "-mgp32 -mdspr2 -O2 -mtune=74kc" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp32 -mdspr2 -mtune=74kc -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* See PR target/51729 for the reason behind the XFAILs. */
/* { dg-final { scan-assembler "\tmult\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/dspr2-MULTU.c b/gcc/testsuite/gcc.target/mips/dspr2-MULTU.c
index 7f04315efe5..a567972447b 100644
--- a/gcc/testsuite/gcc.target/mips/dspr2-MULTU.c
+++ b/gcc/testsuite/gcc.target/mips/dspr2-MULTU.c
@@ -1,7 +1,8 @@
/* Test MIPS32 DSP REV 2 MULTU instruction. Tune for a CPU that has
pipelined multu. */
/* { dg-do compile } */
-/* { dg-options "-mgp32 -mdspr2 -O2 -mtune=74kc" } */
+/* { dg-options "-mgp32 -mdspr2 -mtune=74kc" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* See PR target/51729 for the reason behind the XFAILs. */
/* { dg-final { scan-assembler "\tmultu\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/ext-1.c b/gcc/testsuite/gcc.target/mips/ext-1.c
index 426cbb28573..3306c70941d 100644
--- a/gcc/testsuite/gcc.target/mips/ext-1.c
+++ b/gcc/testsuite/gcc.target/mips/ext-1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O isa_rev>=2 -mgp64" } */
+/* { dg-options "isa_rev>=2 -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdext\t" } } */
/* { dg-final { scan-assembler-not "and" } } */
diff --git a/gcc/testsuite/gcc.target/mips/ext-2.c b/gcc/testsuite/gcc.target/mips/ext-2.c
index d6ccce29e04..6b3d4efc415 100644
--- a/gcc/testsuite/gcc.target/mips/ext-2.c
+++ b/gcc/testsuite/gcc.target/mips/ext-2.c
@@ -2,7 +2,8 @@
zero_extract. The truncate is due to TARGET_PROMOTE_PROTOTYPES, the
zero_extend to PROMOTE_MODE. */
/* { dg-do compile } */
-/* { dg-options "-O isa_rev>=2 -mgp64" } */
+/* { dg-options "isa_rev>=2 -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdext\t" } } */
/* { dg-final { scan-assembler-not "and" } } */
/* { dg-final { scan-assembler-not "srl" } } */
diff --git a/gcc/testsuite/gcc.target/mips/ext-3.c b/gcc/testsuite/gcc.target/mips/ext-3.c
index acdbbc9a413..e921c8b1df0 100644
--- a/gcc/testsuite/gcc.target/mips/ext-3.c
+++ b/gcc/testsuite/gcc.target/mips/ext-3.c
@@ -1,6 +1,7 @@
/* For MIPS64r2 use DEXT rather than DSLL/DSRL to zero-extend. */
/* { dg-do compile } */
-/* { dg-options "-O isa_rev>=2 -mgp64" } */
+/* { dg-options "isa_rev>=2 -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdext\t" } } */
/* { dg-final { scan-assembler-not "sll" } } */
diff --git a/gcc/testsuite/gcc.target/mips/ext-4.c b/gcc/testsuite/gcc.target/mips/ext-4.c
index f3d2ad92aa3..38362e5d77a 100644
--- a/gcc/testsuite/gcc.target/mips/ext-4.c
+++ b/gcc/testsuite/gcc.target/mips/ext-4.c
@@ -1,6 +1,7 @@
/* For MIPS64r2 use DEXT rather than DSLL/DSRL for clear_upper32. */
/* { dg-do compile } */
-/* { dg-options "-O isa_rev>=2 -mgp64" } */
+/* { dg-options "isa_rev>=2 -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdext\t" } } */
/* { dg-final { scan-assembler-not "sll" } } */
diff --git a/gcc/testsuite/gcc.target/mips/ext-5.c b/gcc/testsuite/gcc.target/mips/ext-5.c
index 64186383cb2..8bab2148f49 100644
--- a/gcc/testsuite/gcc.target/mips/ext-5.c
+++ b/gcc/testsuite/gcc.target/mips/ext-5.c
@@ -1,6 +1,7 @@
/* For MIPS32r2 use EXT when ANDing with low-order bitmasks. */
/* { dg-do compile } */
-/* { dg-options "-O isa_rev>=2" } */
+/* { dg-options "isa_rev>=2" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\text\t" } } */
/* { dg-final { scan-assembler-not "\tandi?\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/ext-6.c b/gcc/testsuite/gcc.target/mips/ext-6.c
index b4a7dd2515c..e12cbe6e1c4 100644
--- a/gcc/testsuite/gcc.target/mips/ext-6.c
+++ b/gcc/testsuite/gcc.target/mips/ext-6.c
@@ -1,6 +1,7 @@
/* For MIPS64r2 use DEXT when ANDing with low-order bitmasks. */
/* { dg-do compile } */
-/* { dg-options "-O isa_rev>=2 -mgp64" } */
+/* { dg-options "isa_rev>=2 -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdext\t" } } */
/* { dg-final { scan-assembler-not "\tandi?\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/ext-7.c b/gcc/testsuite/gcc.target/mips/ext-7.c
index 394d41f06c8..2e23dd6525f 100644
--- a/gcc/testsuite/gcc.target/mips/ext-7.c
+++ b/gcc/testsuite/gcc.target/mips/ext-7.c
@@ -1,6 +1,7 @@
/* No need to use ext if we can use andi. */
/* { dg-do compile } */
-/* { dg-options "-O isa_rev>=2" } */
+/* { dg-options "isa_rev>=2" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tandi\t" } } */
/* { dg-final { scan-assembler-not "\td?ext\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/ext-8.c b/gcc/testsuite/gcc.target/mips/ext-8.c
index 90241dd2f19..9ceee7b9f76 100644
--- a/gcc/testsuite/gcc.target/mips/ext-8.c
+++ b/gcc/testsuite/gcc.target/mips/ext-8.c
@@ -1,6 +1,6 @@
/* Also make sure we don't use ext for MIPS*r1. */
/* { dg-do compile } */
-/* { dg-options "-O isa_rev<=1" } */
+/* { dg-options "isa_rev<=1" } */
/* { dg-final { scan-assembler "\tand\t" } } */
/* { dg-final { scan-assembler-not "\td?ext\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/extend-1.c b/gcc/testsuite/gcc.target/mips/extend-1.c
index 94d199f887b..9240ea55886 100644
--- a/gcc/testsuite/gcc.target/mips/extend-1.c
+++ b/gcc/testsuite/gcc.target/mips/extend-1.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64 forbid_cpu=octeon.*" } */
+/* { dg-options "-mgp64 forbid_cpu=octeon.*" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tdsll\t" 5 } } */
/* { dg-final { scan-assembler-times "\tdsra\t" 5 } } */
/* { dg-final { scan-assembler-not "\tsll\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/extend-2.c b/gcc/testsuite/gcc.target/mips/extend-2.c
index b91ae209c0c..a2036a899ee 100644
--- a/gcc/testsuite/gcc.target/mips/extend-2.c
+++ b/gcc/testsuite/gcc.target/mips/extend-2.c
@@ -1,6 +1,6 @@
/* Check the shift_shift alternative of the AND patterns. */
/* { dg-do compile } */
-/* { dg-options "-O isa_rev<=1 -mgp64" } */
+/* { dg-options "isa_rev<=1 -mgp64" } */
/* { dg-final { scan-assembler "\tdsrl\t" } } */
/* { dg-final { scan-assembler "\tdsll\t" } } */
/* { dg-final { scan-assembler-not "\td?ext\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-1.c b/gcc/testsuite/gcc.target/mips/fix-r10000-1.c
index 76f3b86ec5d..edf4d70c63e 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-1.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-10.c b/gcc/testsuite/gcc.target/mips/fix-r10000-10.c
index 6ac908a71bb..ab353b6b1e4 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-10.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-10.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-11.c b/gcc/testsuite/gcc.target/mips/fix-r10000-11.c
index e1677b6577a..30f6038b71f 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-11.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-11.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-12.c b/gcc/testsuite/gcc.target/mips/fix-r10000-12.c
index f767ae20289..855000df2bf 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-12.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-12.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
/* { dg-message "note: '__sync_nand_and_fetch' changed semantics in GCC 4.4" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-13.c b/gcc/testsuite/gcc.target/mips/fix-r10000-13.c
index b0779e0ec34..aa2d236f679 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-13.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-13.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-14.c b/gcc/testsuite/gcc.target/mips/fix-r10000-14.c
index 4a690f59ed1..542e02f9cb0 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-14.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-14.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-15.c b/gcc/testsuite/gcc.target/mips/fix-r10000-15.c
index bb5fd743af7..f44a725ec63 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-15.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-15.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-2.c b/gcc/testsuite/gcc.target/mips/fix-r10000-2.c
index bac01913405..88a59184197 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-2.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-3.c b/gcc/testsuite/gcc.target/mips/fix-r10000-3.c
index bec7951c1d4..fbeeca10f5e 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-3.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-3.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-4.c b/gcc/testsuite/gcc.target/mips/fix-r10000-4.c
index 864ab8c1ee4..344c6277b5b 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-4.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-4.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-5.c b/gcc/testsuite/gcc.target/mips/fix-r10000-5.c
index 62fd70f5f09..a775a6c0e62 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-5.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-5.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-6.c b/gcc/testsuite/gcc.target/mips/fix-r10000-6.c
index d8bdb4516de..62f8fdfb4bd 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-6.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-6.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
/* { dg-message "note: '__sync_fetch_and_nand' changed semantics in GCC 4.4" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-7.c b/gcc/testsuite/gcc.target/mips/fix-r10000-7.c
index d4b558e0115..635326c5c54 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-7.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-7.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-8.c b/gcc/testsuite/gcc.target/mips/fix-r10000-8.c
index d48ed263c82..68978494d6e 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-8.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-8.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r10000-9.c b/gcc/testsuite/gcc.target/mips/fix-r10000-9.c
index 88afad339c9..3d140b1bc8a 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r10000-9.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r10000-9.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfix-r10000" } */
+/* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-1.c b/gcc/testsuite/gcc.target/mips/fix-r4000-1.c
index 551d3549d84..5c812f25600 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-1.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-1.c
@@ -1,4 +1,5 @@
-/* { dg-options "-march=r4000 -mfix-r4000 -O2 -dp" } */
+/* { dg-options "-march=r4000 -mfix-r4000 -dp" } */
+/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
typedef int int32_t;
typedef int uint32_t;
NOMIPS16 int32_t foo (int32_t x, int32_t y) { return x * y; }
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-10.c b/gcc/testsuite/gcc.target/mips/fix-r4000-10.c
index 8c938b7d219..7227bc8c092 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-10.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-10.c
@@ -1,7 +1,8 @@
/* ??? At the moment, lower-subreg.c decomposes the copy of the multiplication
result to $2, which prevents the register allocators from storing the
multiplication result in $2. */
-/* { dg-options "-mips3 -mfix-r4000 -mgp64 -O2 -fno-split-wide-types -dp -EL" } */
+/* { dg-options "-mips3 -mfix-r4000 -mgp64 -EL -fno-split-wide-types -dp" } */
+/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
typedef unsigned long long uint64_t;
typedef unsigned int uint128_t __attribute__((mode(TI)));
NOMIPS16 uint128_t foo (uint64_t x, uint64_t y) { return (uint128_t) x * y; }
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-11.c b/gcc/testsuite/gcc.target/mips/fix-r4000-11.c
index 7cfad3d2f79..1ea7a7c408b 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-11.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-11.c
@@ -1,4 +1,6 @@
-/* { dg-options "-march=r4000 -mfix-r4000 -mgp64 -O2 -dp" } */
+/* { dg-options "-march=r4000 -mfix-r4000 -mgp64 -dp" } */
+/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-skip-if "using DDIV gives a shorter sequence" { *-*-* } { "-Os" } { "" } } */
typedef long long int64_t;
NOMIPS16 int64_t foo (int64_t x) { return x / 11993; }
/* { dg-final { scan-assembler "[concat {\tdmult\t\$4,\$[0-9]+[^\n]+smuldi3_highpart[^\n]+\n\tmfhi\t\$[0-9]+\n}]" } } */
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-12.c b/gcc/testsuite/gcc.target/mips/fix-r4000-12.c
index d449283ddf3..a2afabbc73b 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-12.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-12.c
@@ -1,4 +1,6 @@
-/* { dg-options "-march=r4000 -mfix-r4000 -mgp64 -O2 -dp" } */
+/* { dg-options "-march=r4000 -mfix-r4000 -mgp64 -dp" } */
+/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-skip-if "using DDIVU gives a shorter sequence" { *-*-* } { "-Os" } { "" } } */
typedef unsigned long long uint64_t;
NOMIPS16 uint64_t foo (uint64_t x) { return x / 11993; }
/* { dg-final { scan-assembler "[concat {\tdmultu\t\$4,\$[0-9]+[^\n]+umuldi3_highpart[^\n]+\n\tmfhi\t\$[0-9]+\n}]" } } */
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-2.c b/gcc/testsuite/gcc.target/mips/fix-r4000-2.c
index 6cb7d3594e0..0261b16b1c8 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-2.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-2.c
@@ -1,4 +1,6 @@
-/* { dg-options "-mips1 -mfix-r4000 -O2 -dp -EB" } */
+/* This test requires widening_mul */
+/* { dg-options "-mips1 -mfix-r4000 -dp -EB -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
typedef int int32_t;
typedef long long int64_t;
NOMIPS16 int32_t foo (int32_t x, int32_t y) { return ((int64_t) x * y) >> 32; }
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-3.c b/gcc/testsuite/gcc.target/mips/fix-r4000-3.c
index bd12509d1bd..195a9d10ced 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-3.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-3.c
@@ -1,4 +1,5 @@
-/* { dg-options "-mips1 -mfix-r4000 -O2 -dp -EB" } */
+/* { dg-options "-mips1 -mfix-r4000 -dp -EB" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
typedef unsigned int uint32_t;
typedef unsigned long long uint64_t;
NOMIPS16 uint32_t foo (uint32_t x, uint32_t y) { return ((uint64_t) x * y) >> 32; }
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-4.c b/gcc/testsuite/gcc.target/mips/fix-r4000-4.c
index 3854db8967d..7a66182f524 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-4.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-4.c
@@ -1,7 +1,9 @@
/* ??? At the moment, lower-subreg.c decomposes the copy of the multiplication
result to $2, which prevents the register allocators from storing the
multiplication result in $2. */
-/* { dg-options "-mips1 -mfix-r4000 -O2 -fno-split-wide-types -dp -EL" } */
+/* This test requires widening_mul */
+/* { dg-options "-mips1 -mfix-r4000 -fno-split-wide-types -dp -EL -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
typedef int int32_t;
typedef long long int64_t;
NOMIPS16 int64_t foo (int32_t x, int32_t y) { return (int64_t) x * y; }
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-5.c b/gcc/testsuite/gcc.target/mips/fix-r4000-5.c
index c46300f62db..0c063080068 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-5.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-5.c
@@ -1,7 +1,8 @@
/* ??? At the moment, lower-subreg.c decomposes the copy of the multiplication
result to $2, which prevents the register allocators from storing the
multiplication result in $2. */
-/* { dg-options "-mips1 -mfix-r4000 -O2 -fno-split-wide-types -dp -EL" } */
+/* { dg-options "-mips1 -mfix-r4000 -fno-split-wide-types -dp -EL" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
typedef unsigned int uint32_t;
typedef unsigned long long uint64_t;
NOMIPS16 uint64_t foo (uint32_t x, uint32_t y) { return (uint64_t) x * y; }
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-6.c b/gcc/testsuite/gcc.target/mips/fix-r4000-6.c
index 1e33cc4f765..9647a900cdd 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-6.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-6.c
@@ -1,4 +1,5 @@
-/* { dg-options "-march=r4000 -mfix-r4000 -mgp64 -O2 -dp" } */
+/* { dg-options "-march=r4000 -mfix-r4000 -mgp64 -dp" } */
+/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
typedef long long int64_t;
typedef unsigned long long uint64_t;
NOMIPS16 int64_t foo (int64_t x, int64_t y) { return x * y; }
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-7.c b/gcc/testsuite/gcc.target/mips/fix-r4000-7.c
index 118ba99dfeb..ddba3038350 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-7.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-7.c
@@ -1,4 +1,6 @@
-/* { dg-options "-march=r4000 -mfix-r4000 -O2 -mgp64 -dp -EB" } */
+/* This test requires widening_mul */
+/* { dg-options "-march=r4000 -mfix-r4000 -mgp64 -dp -EB -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
typedef long long int64_t;
typedef int int128_t __attribute__((mode(TI)));
NOMIPS16 int64_t foo (int64_t x, int64_t y) { return ((int128_t) x * y) >> 64; }
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-8.c b/gcc/testsuite/gcc.target/mips/fix-r4000-8.c
index f2c71c1ef1a..4ae670622ba 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-8.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-8.c
@@ -1,4 +1,5 @@
-/* { dg-options "-march=r4000 -mfix-r4000 -O2 -mgp64 -dp -EB" } */
+/* { dg-options "-march=r4000 -mfix-r4000 -mgp64 -dp -EB" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
typedef unsigned long long uint64_t;
typedef unsigned int uint128_t __attribute__((mode(TI)));
NOMIPS16 uint64_t foo (uint64_t x, uint64_t y) { return ((uint128_t) x * y) >> 64; }
diff --git a/gcc/testsuite/gcc.target/mips/fix-r4000-9.c b/gcc/testsuite/gcc.target/mips/fix-r4000-9.c
index da9c11364d2..316715c5934 100644
--- a/gcc/testsuite/gcc.target/mips/fix-r4000-9.c
+++ b/gcc/testsuite/gcc.target/mips/fix-r4000-9.c
@@ -1,7 +1,9 @@
/* ??? At the moment, lower-subreg.c decomposes the copy of the multiplication
result to $2, which prevents the register allocators from storing the
multiplication result in $2. */
-/* { dg-options "-mips3 -mfix-r4000 -mgp64 -O2 -fno-split-wide-types -dp -EL" } */
+/* This test requires widening_mul */
+/* { dg-options "-mips3 -mfix-r4000 -mgp64 -fno-split-wide-types -dp -EL -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
typedef long long int64_t;
typedef int int128_t __attribute__((mode(TI)));
NOMIPS16 int128_t foo (int64_t x, int64_t y) { return (int128_t) x * y; }
diff --git a/gcc/testsuite/gcc.target/mips/fixed-scalar-type.c b/gcc/testsuite/gcc.target/mips/fixed-scalar-type.c
index b4734f4d522..810c82c2f65 100644
--- a/gcc/testsuite/gcc.target/mips/fixed-scalar-type.c
+++ b/gcc/testsuite/gcc.target/mips/fixed-scalar-type.c
@@ -1,6 +1,7 @@
/* Test scalar fixed-point instructions */
/* { dg-do compile { target { fixed_point } } } */
-/* { dg-options "-mdspr2 -O2" } */
+/* { dg-options "-mdspr2" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\taddu\t" 10 } } */
/* { dg-final { scan-assembler-times "\tsubu\t" 10 } } */
/* { dg-final { scan-assembler "\taddu_s.qb\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/fixed-vector-type.c b/gcc/testsuite/gcc.target/mips/fixed-vector-type.c
index 9b67704794f..ddd9660f1d4 100644
--- a/gcc/testsuite/gcc.target/mips/fixed-vector-type.c
+++ b/gcc/testsuite/gcc.target/mips/fixed-vector-type.c
@@ -1,6 +1,7 @@
/* Test vector fixed-point instructions */
/* { dg-do compile { target { fixed_point } } } */
-/* { dg-options "-mdspr2 -O2" } */
+/* { dg-options "-mdspr2" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\taddq_s.ph\t" 2 } } */
/* { dg-final { scan-assembler-times "\tsubq_s.ph\t" 2 } } */
/* { dg-final { scan-assembler-times "\taddu_s.qb\t" 1 } } */
diff --git a/gcc/testsuite/gcc.target/mips/fpcmp-1.c b/gcc/testsuite/gcc.target/mips/fpcmp-1.c
index cae48a0e93a..2ddd3c3389e 100644
--- a/gcc/testsuite/gcc.target/mips/fpcmp-1.c
+++ b/gcc/testsuite/gcc.target/mips/fpcmp-1.c
@@ -1,5 +1,5 @@
/* We used to use c.lt.fmt instead of c.ule.fmt here. */
-/* { dg-options "-mhard-float -O2" } */
+/* { dg-options "-mhard-float" } */
NOMIPS16 int f1 (float x, float y) { return __builtin_isless (x, y); }
NOMIPS16 int f2 (double x, double y) { return __builtin_isless (x, y); }
/* { dg-final { scan-assembler "c\\.ule\\.s" } } */
diff --git a/gcc/testsuite/gcc.target/mips/fpcmp-2.c b/gcc/testsuite/gcc.target/mips/fpcmp-2.c
index 3e1c259f89a..cf0cbbbb51a 100644
--- a/gcc/testsuite/gcc.target/mips/fpcmp-2.c
+++ b/gcc/testsuite/gcc.target/mips/fpcmp-2.c
@@ -1,5 +1,5 @@
/* We used to use c.le.fmt instead of c.ult.fmt here. */
-/* { dg-options "-mhard-float -O2" } */
+/* { dg-options "-mhard-float" } */
NOMIPS16 int f1 (float x, float y) { return __builtin_islessequal (x, y); }
NOMIPS16 int f2 (double x, double y) { return __builtin_islessequal (x, y); }
/* { dg-final { scan-assembler "c\\.ult\\.s" } } */
diff --git a/gcc/testsuite/gcc.target/mips/fpr-moves-1.c b/gcc/testsuite/gcc.target/mips/fpr-moves-1.c
index 92977e04e38..51a5f172389 100644
--- a/gcc/testsuite/gcc.target/mips/fpr-moves-1.c
+++ b/gcc/testsuite/gcc.target/mips/fpr-moves-1.c
@@ -1,4 +1,5 @@
-/* { dg-options "-mabi=32 -mhard-float -mips1 -O2 -EL" } */
+/* { dg-options "-mabi=32 -mhard-float -mips1 -EL" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 void
foo (double d, double *x)
diff --git a/gcc/testsuite/gcc.target/mips/fpr-moves-2.c b/gcc/testsuite/gcc.target/mips/fpr-moves-2.c
index 3f4f833ba5e..ffe614fcbb2 100644
--- a/gcc/testsuite/gcc.target/mips/fpr-moves-2.c
+++ b/gcc/testsuite/gcc.target/mips/fpr-moves-2.c
@@ -1,4 +1,5 @@
-/* { dg-options "-mabi=32 -mhard-float -mips1 -O2 -EB" } */
+/* { dg-options "-mabi=32 -mhard-float -mips1 -EB" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 void
foo (double d, double *x)
diff --git a/gcc/testsuite/gcc.target/mips/fpr-moves-3.c b/gcc/testsuite/gcc.target/mips/fpr-moves-3.c
index 34784d01ce2..80db0710c4c 100644
--- a/gcc/testsuite/gcc.target/mips/fpr-moves-3.c
+++ b/gcc/testsuite/gcc.target/mips/fpr-moves-3.c
@@ -1,4 +1,5 @@
-/* { dg-options "-mabi=32 -mfp64 -O2 -EL" } */
+/* { dg-options "-mabi=32 -mfp64 -EL" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 double
foo (double d)
diff --git a/gcc/testsuite/gcc.target/mips/fpr-moves-4.c b/gcc/testsuite/gcc.target/mips/fpr-moves-4.c
index 282cf761b37..d8f78586ce5 100644
--- a/gcc/testsuite/gcc.target/mips/fpr-moves-4.c
+++ b/gcc/testsuite/gcc.target/mips/fpr-moves-4.c
@@ -1,4 +1,5 @@
-/* { dg-options "-mabi=32 -mfp64 -O2 -EB" } */
+/* { dg-options "-mabi=32 -mfp64 -EB" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 double
foo (double d)
diff --git a/gcc/testsuite/gcc.target/mips/fpr-moves-5.c b/gcc/testsuite/gcc.target/mips/fpr-moves-5.c
index 8f685750f75..18d88804904 100644
--- a/gcc/testsuite/gcc.target/mips/fpr-moves-5.c
+++ b/gcc/testsuite/gcc.target/mips/fpr-moves-5.c
@@ -1,4 +1,5 @@
-/* { dg-options "-mabi=64 -mhard-float -O2 -EL" } */
+/* { dg-options "-mabi=64 -mhard-float -EL" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-require-effective-target mips_newabi_large_long_double } */
NOMIPS16 void
diff --git a/gcc/testsuite/gcc.target/mips/fpr-moves-6.c b/gcc/testsuite/gcc.target/mips/fpr-moves-6.c
index f89a40a3bc1..30a83ec66f3 100644
--- a/gcc/testsuite/gcc.target/mips/fpr-moves-6.c
+++ b/gcc/testsuite/gcc.target/mips/fpr-moves-6.c
@@ -1,4 +1,5 @@
-/* { dg-options "-mabi=64 -mhard-float -O2 -EB" } */
+/* { dg-options "-mabi=64 -mhard-float -EB" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-require-effective-target mips_newabi_large_long_double } */
NOMIPS16 void
diff --git a/gcc/testsuite/gcc.target/mips/fpr-moves-7.c b/gcc/testsuite/gcc.target/mips/fpr-moves-7.c
index 3abd10417d7..56d7ccd637c 100644
--- a/gcc/testsuite/gcc.target/mips/fpr-moves-7.c
+++ b/gcc/testsuite/gcc.target/mips/fpr-moves-7.c
@@ -1,4 +1,4 @@
-/* { dg-options "(-mips16) -mabi=64 -O2 -EL" } */
+/* { dg-options "(-mips16) -mabi=64 -EL" } */
extern long double g[16];
extern unsigned char gstuff[0x10000];
diff --git a/gcc/testsuite/gcc.target/mips/fpr-moves-8.c b/gcc/testsuite/gcc.target/mips/fpr-moves-8.c
index 8b6901b7fc7..bf64193b87e 100644
--- a/gcc/testsuite/gcc.target/mips/fpr-moves-8.c
+++ b/gcc/testsuite/gcc.target/mips/fpr-moves-8.c
@@ -1,4 +1,4 @@
-/* { dg-options "(-mips16) -mabi=64 -O2 -EB" } */
+/* { dg-options "(-mips16) -mabi=64 -EB" } */
extern long double g[16];
extern unsigned char gstuff[0x10000];
diff --git a/gcc/testsuite/gcc.target/mips/ins-1.c b/gcc/testsuite/gcc.target/mips/ins-1.c
index 9e19354d1a6..02bb8ae9e2c 100644
--- a/gcc/testsuite/gcc.target/mips/ins-1.c
+++ b/gcc/testsuite/gcc.target/mips/ins-1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O isa_rev>=2 -mgp32" } */
+/* { dg-options "isa_rev>=2 -mgp32" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tins\t" } } */
struct
diff --git a/gcc/testsuite/gcc.target/mips/ins-2.c b/gcc/testsuite/gcc.target/mips/ins-2.c
index a71e6c05326..916bc4b5e2d 100644
--- a/gcc/testsuite/gcc.target/mips/ins-2.c
+++ b/gcc/testsuite/gcc.target/mips/ins-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -meb isa_rev>=2 -mgp64" } */
+/* { dg-options "-meb isa_rev>=2 -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tins\t|\tdins\t" 1 } } */
/* { dg-final { scan-assembler-times "\tsll\t|\tins\t" 1 } } */
diff --git a/gcc/testsuite/gcc.target/mips/int-moves-1.c b/gcc/testsuite/gcc.target/mips/int-moves-1.c
index 485555c39ff..77a554d21a5 100644
--- a/gcc/testsuite/gcc.target/mips/int-moves-1.c
+++ b/gcc/testsuite/gcc.target/mips/int-moves-1.c
@@ -1,4 +1,4 @@
-/* { dg-options "(-mips16) -mgp64 -O2 -EL" } */
+/* { dg-options "(-mips16) -mgp64 -EL" } */
typedef unsigned uint128_t __attribute__((mode(TI)));
diff --git a/gcc/testsuite/gcc.target/mips/int-moves-2.c b/gcc/testsuite/gcc.target/mips/int-moves-2.c
index eba7983707b..930c36f9f83 100644
--- a/gcc/testsuite/gcc.target/mips/int-moves-2.c
+++ b/gcc/testsuite/gcc.target/mips/int-moves-2.c
@@ -1,4 +1,4 @@
-/* { dg-options "(-mips16) -mgp64 -O2 -EB" } */
+/* { dg-options "(-mips16) -mgp64 -EB" } */
typedef unsigned uint128_t __attribute__((mode(TI)));
diff --git a/gcc/testsuite/gcc.target/mips/interrupt_handler-2.c b/gcc/testsuite/gcc.target/mips/interrupt_handler-2.c
index 13b41e11885..9ab32bf5a0d 100644
--- a/gcc/testsuite/gcc.target/mips/interrupt_handler-2.c
+++ b/gcc/testsuite/gcc.target/mips/interrupt_handler-2.c
@@ -1,5 +1,6 @@
/* Make sure that we emit .cfa_restore notes for LO and HI. */
-/* { dg-options "-mips32r2 -msoft-float -O -g" } */
+/* { dg-options "-mips32r2 -msoft-float -g" } */
+/* { dg-skip-if "forbidding a frame pointer makes this a code quallity test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\t\\\.cfi_restore 64\n" } } */
/* { dg-final { scan-assembler "\t\\\.cfi_restore 65\n" } } */
/* { dg-final { scan-assembler-not "\\\.cfi_def_cfa( |\t)" } } */
diff --git a/gcc/testsuite/gcc.target/mips/interrupt_handler-3.c b/gcc/testsuite/gcc.target/mips/interrupt_handler-3.c
index 2380123b16e..298e0467779 100644
--- a/gcc/testsuite/gcc.target/mips/interrupt_handler-3.c
+++ b/gcc/testsuite/gcc.target/mips/interrupt_handler-3.c
@@ -1,5 +1,6 @@
/* Make sure that we emit .cfa_restore notes for LO, HI and GPRs. */
-/* { dg-options "-mips32r2 -msoft-float -O -g" } */
+/* { dg-options "-mips32r2 -msoft-float -g" } */
+/* { dg-skip-if "forbidding a frame pointer makes this a code quallity test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\t\\\.cfi_restore 1\n" } } */
/* { dg-final { scan-assembler "\t\\\.cfi_restore 2\n" } } */
/* { dg-final { scan-assembler "\t\\\.cfi_restore 3\n" } } */
diff --git a/gcc/testsuite/gcc.target/mips/lazy-binding-1.c b/gcc/testsuite/gcc.target/mips/lazy-binding-1.c
index e281a270a6e..4f8dde566f7 100644
--- a/gcc/testsuite/gcc.target/mips/lazy-binding-1.c
+++ b/gcc/testsuite/gcc.target/mips/lazy-binding-1.c
@@ -1,5 +1,8 @@
/* { dg-do compile } */
-/* { dg-options "-mshared -mexplicit-relocs -O2 -fno-delayed-branch" } */
+/* { dg-options "-mshared -mexplicit-relocs -fno-delayed-branch -fno-unroll-loops" } */
+/* We can load into something other than $25 when not optimizing,
+ then immediately move into $25. */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
void bar (void);
diff --git a/gcc/testsuite/gcc.target/mips/long-calls-pg.c b/gcc/testsuite/gcc.target/mips/long-calls-pg.c
index 5e554c497d8..5ccfe5149bd 100644
--- a/gcc/testsuite/gcc.target/mips/long-calls-pg.c
+++ b/gcc/testsuite/gcc.target/mips/long-calls-pg.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mabi=32 -pg -mno-abicalls -mlong-calls" } */
+/* { dg-options "-mabi=32 -pg -mno-abicalls -mlong-calls" } */
/* { dg-final { scan-assembler-not "\tjal\t_mcount" } } */
NOMIPS16 void
foo (void)
diff --git a/gcc/testsuite/gcc.target/mips/loongson-muldiv-1.c b/gcc/testsuite/gcc.target/mips/loongson-muldiv-1.c
index fd7289ceaf7..2efc3ef3f32 100644
--- a/gcc/testsuite/gcc.target/mips/loongson-muldiv-1.c
+++ b/gcc/testsuite/gcc.target/mips/loongson-muldiv-1.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 isa=loongson" } */
+/* { dg-options "isa=loongson" } */
typedef int st;
typedef unsigned int ut;
diff --git a/gcc/testsuite/gcc.target/mips/loongson-muldiv-2.c b/gcc/testsuite/gcc.target/mips/loongson-muldiv-2.c
index 6f1f1387551..07523aa4a4e 100644
--- a/gcc/testsuite/gcc.target/mips/loongson-muldiv-2.c
+++ b/gcc/testsuite/gcc.target/mips/loongson-muldiv-2.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 isa=loongson -mgp64" } */
+/* { dg-options "isa=loongson -mgp64" } */
typedef long long st;
typedef unsigned long long ut;
diff --git a/gcc/testsuite/gcc.target/mips/loongson-shift-count-truncated-1.c b/gcc/testsuite/gcc.target/mips/loongson-shift-count-truncated-1.c
index 1c892d80627..778d7398133 100644
--- a/gcc/testsuite/gcc.target/mips/loongson-shift-count-truncated-1.c
+++ b/gcc/testsuite/gcc.target/mips/loongson-shift-count-truncated-1.c
@@ -4,9 +4,9 @@
/* loongson.h does not handle or check for MIPS16ness. There doesn't
seem any good reason for it to, given that the Loongson processors
do not support MIPS16. */
-/* { dg-options "isa=loongson -mhard-float -mno-mips16 -O1" } */
+/* { dg-options "isa=loongson -mhard-float -mno-mips16" } */
/* See PR 52155. */
-/* { dg-options "isa=loongson -mhard-float -mno-mips16 -O1 -mlong64" { mips*-*-elf* && ilp32 } } */
+/* { dg-options "isa=loongson -mhard-float -mno-mips16 -mlong64" { mips*-*-elf* && ilp32 } } */
#include "loongson.h"
#include <assert.h>
diff --git a/gcc/testsuite/gcc.target/mips/loongson3a-muldiv-1.c b/gcc/testsuite/gcc.target/mips/loongson3a-muldiv-1.c
index cc15b83ab93..1c4d010b354 100644
--- a/gcc/testsuite/gcc.target/mips/loongson3a-muldiv-1.c
+++ b/gcc/testsuite/gcc.target/mips/loongson3a-muldiv-1.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -march=loongson3a" } */
+/* { dg-options "-march=loongson3a" } */
typedef int st;
typedef unsigned int ut;
diff --git a/gcc/testsuite/gcc.target/mips/loongson3a-muldiv-2.c b/gcc/testsuite/gcc.target/mips/loongson3a-muldiv-2.c
index 592b492c308..9695b3f6258 100644
--- a/gcc/testsuite/gcc.target/mips/loongson3a-muldiv-2.c
+++ b/gcc/testsuite/gcc.target/mips/loongson3a-muldiv-2.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -march=loongson3a -mgp64" } */
+/* { dg-options "-march=loongson3a -mgp64" } */
typedef long long st;
typedef unsigned long long ut;
diff --git a/gcc/testsuite/gcc.target/mips/madd-1.c b/gcc/testsuite/gcc.target/mips/madd-1.c
index 53881a4b085..416673b46d7 100644
--- a/gcc/testsuite/gcc.target/mips/madd-1.c
+++ b/gcc/testsuite/gcc.target/mips/madd-1.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr4130 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-march=vr4130 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmacc\t\\\$1," 3 } } */
NOMIPS16 long long
diff --git a/gcc/testsuite/gcc.target/mips/madd-2.c b/gcc/testsuite/gcc.target/mips/madd-2.c
index eab7a68454c..ce0d9eb6fa0 100644
--- a/gcc/testsuite/gcc.target/mips/madd-2.c
+++ b/gcc/testsuite/gcc.target/mips/madd-2.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr5500 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-march=vr5500 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmadd\t" 3 } } */
NOMIPS16 long long
diff --git a/gcc/testsuite/gcc.target/mips/madd-3.c b/gcc/testsuite/gcc.target/mips/madd-3.c
index 6b479f59c71..29f4c9b3768 100644
--- a/gcc/testsuite/gcc.target/mips/madd-3.c
+++ b/gcc/testsuite/gcc.target/mips/madd-3.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa_rev>=1 -mgp32" } */
+/* { dg-options "isa_rev>=1 -mgp32" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmadd\t" 3 } } */
NOMIPS16 long long
diff --git a/gcc/testsuite/gcc.target/mips/madd-4.c b/gcc/testsuite/gcc.target/mips/madd-4.c
index f325af74698..28c751b40f7 100644
--- a/gcc/testsuite/gcc.target/mips/madd-4.c
+++ b/gcc/testsuite/gcc.target/mips/madd-4.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mdspr2 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-mdspr2 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmadd\t\\\$ac" 3 } } */
NOMIPS16 long long
diff --git a/gcc/testsuite/gcc.target/mips/madd-5.c b/gcc/testsuite/gcc.target/mips/madd-5.c
index 1ad1c91f3e1..d1696a6a869 100644
--- a/gcc/testsuite/gcc.target/mips/madd-5.c
+++ b/gcc/testsuite/gcc.target/mips/madd-5.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O2 -march=5kc" } */
+/* { dg-options "-march=5kc" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmadd\t" 4 } } */
/* { dg-final { scan-assembler-not "\tmtlo\t" } } */
/* { dg-final { scan-assembler-times "\tmflo\t" 3 } } */
diff --git a/gcc/testsuite/gcc.target/mips/madd-6.c b/gcc/testsuite/gcc.target/mips/madd-6.c
index 4e5afadceb2..9323b8e104a 100644
--- a/gcc/testsuite/gcc.target/mips/madd-6.c
+++ b/gcc/testsuite/gcc.target/mips/madd-6.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O2 -march=5kc" } */
+/* { dg-options "-march=5kc" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tmadd\t" } } */
/* { dg-final { scan-assembler "\tmul\t" } } */
/* { dg-final { scan-assembler "\taddu\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/madd-7.c b/gcc/testsuite/gcc.target/mips/madd-7.c
index b43d7207427..a639aa4f8fe 100644
--- a/gcc/testsuite/gcc.target/mips/madd-7.c
+++ b/gcc/testsuite/gcc.target/mips/madd-7.c
@@ -1,4 +1,6 @@
-/* { dg-options "-O2 -march=5kc" } */
+/* { dg-options "-march=5kc" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-skip-if "requires -fira-region=all or =mixed" { *-*-* } { "-Os" } { "" } } */
/* { dg-final { scan-assembler-not "\tmul\t" } } */
/* { dg-final { scan-assembler "\tmadd\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/madd-8.c b/gcc/testsuite/gcc.target/mips/madd-8.c
index 35092a8ad93..794a6ff1727 100644
--- a/gcc/testsuite/gcc.target/mips/madd-8.c
+++ b/gcc/testsuite/gcc.target/mips/madd-8.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O2 -march=5kc" } */
+/* { dg-options "-march=5kc" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmul\t" } } */
/* { dg-final { scan-assembler-not "\tmadd\t" } } */
/* { dg-final { scan-assembler-not "\tmtlo\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/madd-9.c b/gcc/testsuite/gcc.target/mips/madd-9.c
index 25dbd18a510..6d545495c03 100644
--- a/gcc/testsuite/gcc.target/mips/madd-9.c
+++ b/gcc/testsuite/gcc.target/mips/madd-9.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa_rev>=1 -mgp32" } */
+/* { dg-options "isa_rev>=1 -mgp32" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tmul\t" } } */
/* { dg-final { scan-assembler "\tmadd\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/maddu-1.c b/gcc/testsuite/gcc.target/mips/maddu-1.c
index 04161ce3a21..af2b4181cdf 100644
--- a/gcc/testsuite/gcc.target/mips/maddu-1.c
+++ b/gcc/testsuite/gcc.target/mips/maddu-1.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr4130 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-march=vr4130 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmaccu\t\\\$1," 3 } } */
typedef unsigned int ui;
diff --git a/gcc/testsuite/gcc.target/mips/maddu-2.c b/gcc/testsuite/gcc.target/mips/maddu-2.c
index a9768f15bf8..ea091e4e1ce 100644
--- a/gcc/testsuite/gcc.target/mips/maddu-2.c
+++ b/gcc/testsuite/gcc.target/mips/maddu-2.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr5500 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-march=vr5500 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmaddu\t" 3 } } */
typedef unsigned int ui;
diff --git a/gcc/testsuite/gcc.target/mips/maddu-3.c b/gcc/testsuite/gcc.target/mips/maddu-3.c
index b0b4817a47f..27a7350f07b 100644
--- a/gcc/testsuite/gcc.target/mips/maddu-3.c
+++ b/gcc/testsuite/gcc.target/mips/maddu-3.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa_rev>=1 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "isa_rev>=1 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmaddu\t" 3 } } */
typedef unsigned int ui;
diff --git a/gcc/testsuite/gcc.target/mips/maddu-4.c b/gcc/testsuite/gcc.target/mips/maddu-4.c
index 9c1ccd5f926..58c4a7ebe0c 100644
--- a/gcc/testsuite/gcc.target/mips/maddu-4.c
+++ b/gcc/testsuite/gcc.target/mips/maddu-4.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mdspr2 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-mdspr2 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmaddu\t\\\$ac" 3 } } */
typedef unsigned int ui;
diff --git a/gcc/testsuite/gcc.target/mips/memcpy-1.c b/gcc/testsuite/gcc.target/mips/memcpy-1.c
index f3eda7500db..f4e4698141e 100644
--- a/gcc/testsuite/gcc.target/mips/memcpy-1.c
+++ b/gcc/testsuite/gcc.target/mips/memcpy-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tlbu\t" } } */
#include <string.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-1.c b/gcc/testsuite/gcc.target/mips/mips-3d-1.c
index eb3f8f9a864..f11ffc5a80f 100644
--- a/gcc/testsuite/gcc.target/mips/mips-3d-1.c
+++ b/gcc/testsuite/gcc.target/mips/mips-3d-1.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mips3d" } */
+/* { dg-options "-mips3d" } */
/* Test MIPS-3D builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-2.c b/gcc/testsuite/gcc.target/mips/mips-3d-2.c
index dc815748ebd..b04c3bfb5d5 100644
--- a/gcc/testsuite/gcc.target/mips/mips-3d-2.c
+++ b/gcc/testsuite/gcc.target/mips/mips-3d-2.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mips3d" } */
+/* { dg-options "-mips3d" } */
/* Test MIPS-3D branch-if-any-two builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-3.c b/gcc/testsuite/gcc.target/mips/mips-3d-3.c
index 7df590f5c30..e4de8fb19bf 100644
--- a/gcc/testsuite/gcc.target/mips/mips-3d-3.c
+++ b/gcc/testsuite/gcc.target/mips/mips-3d-3.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mips3d" } */
+/* { dg-options "-mips3d" } */
/* Test MIPS-3D absolute compare builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-4.c b/gcc/testsuite/gcc.target/mips/mips-3d-4.c
index 7f9cbdb1b84..3d28d7f2c66 100644
--- a/gcc/testsuite/gcc.target/mips/mips-3d-4.c
+++ b/gcc/testsuite/gcc.target/mips/mips-3d-4.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mips3d" } */
+/* { dg-options "-mips3d" } */
/* Test MIPS-3D branch-if-any-four builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-5.c b/gcc/testsuite/gcc.target/mips/mips-3d-5.c
index c07dbe50580..a433675cab9 100644
--- a/gcc/testsuite/gcc.target/mips/mips-3d-5.c
+++ b/gcc/testsuite/gcc.target/mips/mips-3d-5.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mips3d" } */
+/* { dg-options "-mips3d" } */
/* Test MIPS-3D absolute-compare & branch-if-any-four builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-6.c b/gcc/testsuite/gcc.target/mips/mips-3d-6.c
index 848414540f0..e6b44f07585 100644
--- a/gcc/testsuite/gcc.target/mips/mips-3d-6.c
+++ b/gcc/testsuite/gcc.target/mips/mips-3d-6.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mips3d" } */
+/* { dg-options "-mips3d" } */
/* Test MIPS-3D absolute compare (floats) builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-7.c b/gcc/testsuite/gcc.target/mips/mips-3d-7.c
index d5d09f99869..2531ddf8b1a 100644
--- a/gcc/testsuite/gcc.target/mips/mips-3d-7.c
+++ b/gcc/testsuite/gcc.target/mips/mips-3d-7.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mips3d" } */
+/* { dg-options "-mips3d" } */
/* Test MIPS-3D absolute compare (doubles) builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-8.c b/gcc/testsuite/gcc.target/mips/mips-3d-8.c
index c80f2b9c893..1d199d7d0c0 100644
--- a/gcc/testsuite/gcc.target/mips/mips-3d-8.c
+++ b/gcc/testsuite/gcc.target/mips/mips-3d-8.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mips3d" } */
+/* { dg-options "-mips3d" } */
/* Test MIPS-3D absolute compare and conditional move builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-3d-9.c b/gcc/testsuite/gcc.target/mips/mips-3d-9.c
index 3875391b535..d697efdedf1 100644
--- a/gcc/testsuite/gcc.target/mips/mips-3d-9.c
+++ b/gcc/testsuite/gcc.target/mips/mips-3d-9.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mips3d" } */
+/* { dg-options "-mips3d" } */
/* Matrix Multiplications */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-1.c b/gcc/testsuite/gcc.target/mips/mips-ps-1.c
index 9e6c6600617..73598a840bd 100644
--- a/gcc/testsuite/gcc.target/mips/mips-ps-1.c
+++ b/gcc/testsuite/gcc.target/mips/mips-ps-1.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mpaired-single" } */
+/* { dg-options "-mpaired-single" } */
/* Test v2sf calculations */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-2.c b/gcc/testsuite/gcc.target/mips/mips-ps-2.c
index baec12c1ce6..52642558664 100644
--- a/gcc/testsuite/gcc.target/mips/mips-ps-2.c
+++ b/gcc/testsuite/gcc.target/mips/mips-ps-2.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mpaired-single" } */
+/* { dg-options "-mpaired-single" } */
/* Test MIPS paired-single builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-3.c b/gcc/testsuite/gcc.target/mips/mips-ps-3.c
index e9ed4c03f5f..7e6ffd0667b 100644
--- a/gcc/testsuite/gcc.target/mips/mips-ps-3.c
+++ b/gcc/testsuite/gcc.target/mips/mips-ps-3.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mpaired-single" } */
+/* { dg-options "-mpaired-single" } */
/* Test MIPS paired-single conditional move */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-4.c b/gcc/testsuite/gcc.target/mips/mips-ps-4.c
index b4452d09105..06850adb300 100644
--- a/gcc/testsuite/gcc.target/mips/mips-ps-4.c
+++ b/gcc/testsuite/gcc.target/mips/mips-ps-4.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -mpaired-single" } */
+/* { dg-options "-mpaired-single" } */
/* Test MIPS paired-single comparisons */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-5.c b/gcc/testsuite/gcc.target/mips/mips-ps-5.c
index 94d2f80efc7..7b6d76f790e 100644
--- a/gcc/testsuite/gcc.target/mips/mips-ps-5.c
+++ b/gcc/testsuite/gcc.target/mips/mips-ps-5.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mpaired-single -mgp64 -ftree-vectorize" } */
+/* { dg-options "-mpaired-single -mgp64 -ftree-vectorize" } */
+/* { dg-skip-if "requires vectorization" { *-*-* } { "-O0" "-Os" } { "" } } */
extern float a[], b[], c[];
diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-6.c b/gcc/testsuite/gcc.target/mips/mips-ps-6.c
index 5b8b2522866..5bdfe436f40 100644
--- a/gcc/testsuite/gcc.target/mips/mips-ps-6.c
+++ b/gcc/testsuite/gcc.target/mips/mips-ps-6.c
@@ -1,7 +1,7 @@
/* mips-ps-2.c with an extra -ffinite-math-only option. This option
changes the way that abs.ps is handled. */
/* { dg-do run } */
-/* { dg-options "-O2 -mpaired-single -ffinite-math-only" } */
+/* { dg-options "-mpaired-single -ffinite-math-only" } */
/* Test MIPS paired-single builtin functions */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-7.c b/gcc/testsuite/gcc.target/mips/mips-ps-7.c
index 65a1104ba39..cfc440bd30c 100644
--- a/gcc/testsuite/gcc.target/mips/mips-ps-7.c
+++ b/gcc/testsuite/gcc.target/mips/mips-ps-7.c
@@ -1,6 +1,7 @@
/* mips-ps-5.c with -mgp32 instead of -mgp64. */
/* { dg-do compile } */
-/* { dg-options "-mgp32 -O2 -mpaired-single -ftree-vectorize" } */
+/* { dg-options "-mgp32 -mpaired-single -ftree-vectorize" } */
+/* { dg-skip-if "requires vectorization" { *-*-* } { "-O0" "-Os" } { "" } } */
extern float a[], b[], c[];
diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-type-2.c b/gcc/testsuite/gcc.target/mips/mips-ps-type-2.c
index f7988553394..6d5ebaee765 100644
--- a/gcc/testsuite/gcc.target/mips/mips-ps-type-2.c
+++ b/gcc/testsuite/gcc.target/mips/mips-ps-type-2.c
@@ -1,7 +1,8 @@
/* Test v2sf calculations. The nmadd and nmsub patterns need
-ffinite-math-only. */
/* { dg-do compile } */
-/* { dg-options "isa_rev>=2 -mgp32 -O2 -mpaired-single -ffinite-math-only" } */
+/* { dg-options "isa_rev>=2 -mgp32 -mpaired-single -ffinite-math-only" } */
+/* { dg-skip-if "nmadd and nmsub need combine" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "cvt.ps.s" } } */
/* { dg-final { scan-assembler "mov.ps" } } */
/* { dg-final { scan-assembler "ldc1" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mips-ps-type.c b/gcc/testsuite/gcc.target/mips/mips-ps-type.c
index 2a10f91bd54..c7dcddd2c30 100644
--- a/gcc/testsuite/gcc.target/mips/mips-ps-type.c
+++ b/gcc/testsuite/gcc.target/mips/mips-ps-type.c
@@ -1,7 +1,8 @@
/* Test v2sf calculations. The nmadd and nmsub patterns need
-ffinite-math-only. */
/* { dg-do compile } */
-/* { dg-options "-O2 -mpaired-single -mgp64 -ffinite-math-only" } */
+/* { dg-options "-mpaired-single -mgp64 -ffinite-math-only" } */
+/* { dg-skip-if "nmadd and nmsub need combine" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "cvt.ps.s" } } */
/* { dg-final { scan-assembler "mov.ps" } } */
/* { dg-final { scan-assembler "ldc1" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mips-sched-madd.c b/gcc/testsuite/gcc.target/mips/mips-sched-madd.c
index c0f9d332a59..1db1550fd49 100644
--- a/gcc/testsuite/gcc.target/mips/mips-sched-madd.c
+++ b/gcc/testsuite/gcc.target/mips/mips-sched-madd.c
@@ -1,7 +1,8 @@
/* Test for case where another independent multiply insn may interfere
with a macc chain. */
/* { dg-do compile } */
-/* { dg-options "-Os -march=24kf" } */
+/* { dg-options "-march=24kf" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 int foo (int a, int b, int c, int d, int e, int f, int g)
{
diff --git a/gcc/testsuite/gcc.target/mips/mips.exp b/gcc/testsuite/gcc.target/mips/mips.exp
index 5b1bb7a45a6..fddce3427ac 100644
--- a/gcc/testsuite/gcc.target/mips/mips.exp
+++ b/gcc/testsuite/gcc.target/mips/mips.exp
@@ -222,6 +222,10 @@ load_lib gcc-dg.exp
# A list of GROUP REGEXP pairs. Each GROUP represents a logical group of
# options from which only one option should be chosen. REGEXP matches all
# the options in that group; it is implicitly wrapped in "^(...)$".
+#
+# Note that -O* is deliberately omitted from this list. Tests in this
+# directory are run at various optimisation levels and should use
+# dg-skip-if to skip any incompatible levels.
set mips_option_groups {
abi "-mabi=.*"
addressing "addressing=.*"
@@ -236,7 +240,6 @@ set mips_option_groups {
long "-mlong(32|64)"
mips16 "-mips16|-mno-mips16|-mflip-mips16"
mips3d "-mips3d|-mno-mips3d"
- optimization "-O(|[0-3s])"
pic "-f(no-|)(pic|PIC)"
profiling "-pg"
small-data "-G[0-9]+"
@@ -283,13 +286,21 @@ foreach option {
# Add -ffoo/-fno-foo options to mips_option_groups.
foreach option {
delayed-branch
+ expensive-optimizations
fast-math
+ fat-lto-objects
finite-math-only
fixed-hi
fixed-lo
lax-vector-conversions
+ omit-frame-pointer
+ optimize-sibling-calls
+ peephole2
+ schedule-insns2
split-wide-types
tree-vectorize
+ unroll-all-loops
+ unroll-loops
} {
lappend mips_option_groups $option "-f(no-|)$option"
}
@@ -881,6 +892,10 @@ proc mips-dg-options { args } {
}
}
+ # Handle dependencies between the test options and the optimization ones.
+ mips_option_dependency options "-fno-unroll-loops" "-fno-unroll-all-loops"
+ mips_option_dependency options "-pg" "-fno-omit-frame-pointer"
+
# Handle dependencies between options on the left of the
# dependency diagram.
mips_option_dependency options "-mips3d" "-mpaired-single"
@@ -1253,8 +1268,7 @@ proc mips-gcc-dg-test { prog do_what extra_tool_flags } {
dg-init
mips-dg-init
-# MIPS16 is defined by "-mips16" or "(-mips16)" in dg-options.
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.c]] "" \
+gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.c]] \
"-DNOMIPS16=__attribute__((nomips16))"
mips-dg-finish
dg-finish
diff --git a/gcc/testsuite/gcc.target/mips/mips16e-extends.c b/gcc/testsuite/gcc.target/mips/mips16e-extends.c
index d077f2fae6e..15f7dd87db8 100644
--- a/gcc/testsuite/gcc.target/mips/mips16e-extends.c
+++ b/gcc/testsuite/gcc.target/mips/mips16e-extends.c
@@ -1,5 +1,6 @@
/* -mlong32 added because of PR target/38595. */
-/* { dg-options "(-mips16) -Os isa_rev>=1 -mlong32" } */
+/* { dg-options "(-mips16) isa_rev>=1 -mlong32" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
MIPS16 short cksum16 (unsigned long n)
{
diff --git a/gcc/testsuite/gcc.target/mips/mips32-dsp-run.c b/gcc/testsuite/gcc.target/mips/mips32-dsp-run.c
index ccbdef553ee..ccd9d380fb3 100644
--- a/gcc/testsuite/gcc.target/mips/mips32-dsp-run.c
+++ b/gcc/testsuite/gcc.target/mips/mips32-dsp-run.c
@@ -1,6 +1,6 @@
/* Test MIPS32 DSP instructions */
/* { dg-do run } */
-/* { dg-options "-mdsp -O2" } */
+/* { dg-options "-mdsp" } */
#include <stdlib.h>
#include <stdio.h>
@@ -59,8 +59,10 @@ NOMIPS16 void test_MIPS_DSP ()
v4i8 v4i8_a,v4i8_b,v4i8_c,v4i8_r,v4i8_s;
v2q15 v2q15_a,v2q15_b,v2q15_c,v2q15_r,v2q15_s;
q31 q31_a,q31_b,q31_c,q31_r,q31_s;
- i32 i32_a,i32_b,i32_c,i32_r,i32_s;
- ui32 ui32_a,ui32_b,ui32_c;
+ /* To protect the multiplication-related tests from being optimized
+ at compile time. */
+ volatile i32 i32_a,i32_b,i32_c,i32_r,i32_s;
+ volatile ui32 ui32_a,ui32_b,ui32_c;
a64 a64_a,a64_b,a64_c,a64_r,a64_s;
void *ptr_a;
diff --git a/gcc/testsuite/gcc.target/mips/mips32-dsp.c b/gcc/testsuite/gcc.target/mips/mips32-dsp.c
index c2a8ae77505..8a292ef66cc 100644
--- a/gcc/testsuite/gcc.target/mips/mips32-dsp.c
+++ b/gcc/testsuite/gcc.target/mips/mips32-dsp.c
@@ -156,8 +156,10 @@ NOMIPS16 void test_MIPS_DSP ()
v4i8 v4i8_a,v4i8_b,v4i8_c,v4i8_r,v4i8_s;
v2q15 v2q15_a,v2q15_b,v2q15_c,v2q15_r,v2q15_s;
q31 q31_a,q31_b,q31_c,q31_r,q31_s;
- i32 i32_a,i32_b,i32_c,i32_r,i32_s;
- ui32 ui32_a,ui32_b,ui32_c;
+ /* To protect the multiplication-related tests from being optimized
+ at compile time. */
+ volatile i32 i32_a,i32_b,i32_c,i32_r,i32_s;
+ volatile ui32 ui32_a,ui32_b,ui32_c;
a64 a64_a,a64_b,a64_c,a64_r,a64_s;
void *ptr_a;
diff --git a/gcc/testsuite/gcc.target/mips/mips32-dspr2.c b/gcc/testsuite/gcc.target/mips/mips32-dspr2.c
index 1b3031ff19d..1f7e9287313 100644
--- a/gcc/testsuite/gcc.target/mips/mips32-dspr2.c
+++ b/gcc/testsuite/gcc.target/mips/mips32-dspr2.c
@@ -1,6 +1,6 @@
/* Test MIPS32 DSP REV 2 instructions */
/* { dg-do run } */
-/* { dg-options "-mdspr2 -O2" } */
+/* { dg-options "-mdspr2" } */
typedef signed char v4q7 __attribute__ ((vector_size(4)));
typedef signed char v4i8 __attribute__ ((vector_size(4)));
diff --git a/gcc/testsuite/gcc.target/mips/mips32r2-mxhc1.c b/gcc/testsuite/gcc.target/mips/mips32r2-mxhc1.c
index cf57323db1a..359a845901d 100644
--- a/gcc/testsuite/gcc.target/mips/mips32r2-mxhc1.c
+++ b/gcc/testsuite/gcc.target/mips/mips32r2-mxhc1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -mabi=32 -mfp64" } */
+/* { dg-options "-mabi=32 -mfp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "mthc1" } } */
/* { dg-final { scan-assembler "mfhc1" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mips64-dsp-ldx.c b/gcc/testsuite/gcc.target/mips/mips64-dsp-ldx.c
index d1366761902..02e6166577d 100644
--- a/gcc/testsuite/gcc.target/mips/mips64-dsp-ldx.c
+++ b/gcc/testsuite/gcc.target/mips/mips64-dsp-ldx.c
@@ -1,6 +1,7 @@
/* Test MIPS64 DSP instructions */
/* { dg-do compile } */
-/* { dg-options "-mgp64 -mdsp -O" } */
+/* { dg-options "-mgp64 -mdsp" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tldx\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mmcount-ra-address-1.c b/gcc/testsuite/gcc.target/mips/mmcount-ra-address-1.c
index 8514ed8cb4b..3d07939ca59 100644
--- a/gcc/testsuite/gcc.target/mips/mmcount-ra-address-1.c
+++ b/gcc/testsuite/gcc.target/mips/mmcount-ra-address-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -pg -mmcount-ra-address -mabi=64" } */
+/* { dg-options "-pg -mmcount-ra-address -mabi=64" } */
/* { dg-final { scan-assembler "\tmove\t\\\$12,\\\$0" } } */
NOMIPS16 int bazl(int i)
{
diff --git a/gcc/testsuite/gcc.target/mips/mmcount-ra-address-2.c b/gcc/testsuite/gcc.target/mips/mmcount-ra-address-2.c
index bb59a1828c9..34b30d9874c 100644
--- a/gcc/testsuite/gcc.target/mips/mmcount-ra-address-2.c
+++ b/gcc/testsuite/gcc.target/mips/mmcount-ra-address-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -pg -mmcount-ra-address -mabi=64" } */
+/* { dg-options "-pg -mmcount-ra-address -mabi=64 -mno-abicalls" } */
+/* { dg-skip-if "requiring a specific frame layout makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdla\t\\\$12,8\\(\\\$sp\\)" } } */
int foo (int);
NOMIPS16 int bar (int i)
diff --git a/gcc/testsuite/gcc.target/mips/mmcount-ra-address-3.c b/gcc/testsuite/gcc.target/mips/mmcount-ra-address-3.c
index 8c94c8345e9..17bcb76be50 100644
--- a/gcc/testsuite/gcc.target/mips/mmcount-ra-address-3.c
+++ b/gcc/testsuite/gcc.target/mips/mmcount-ra-address-3.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -pg -mmcount-ra-address -mabi=64" } */
+/* { dg-options "-pg -mmcount-ra-address -mabi=64 -mno-abicalls" } */
+/* { dg-skip-if "requiring a specific frame layout makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdla\t\\\$12,200008\\(\\\$sp\\)" } } */
int foo (int *);
NOMIPS16 int bar(int i)
diff --git a/gcc/testsuite/gcc.target/mips/movcc-1.c b/gcc/testsuite/gcc.target/mips/movcc-1.c
index 1a930c9ac06..fbc6781e489 100644
--- a/gcc/testsuite/gcc.target/mips/movcc-1.c
+++ b/gcc/testsuite/gcc.target/mips/movcc-1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa>=4" } */
+/* { dg-options "isa>=4" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "movz" } } */
/* { dg-final { scan-assembler "movn" } } */
diff --git a/gcc/testsuite/gcc.target/mips/movcc-2.c b/gcc/testsuite/gcc.target/mips/movcc-2.c
index d42acc1d77c..cb91a9db573 100644
--- a/gcc/testsuite/gcc.target/mips/movcc-2.c
+++ b/gcc/testsuite/gcc.target/mips/movcc-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa>=4" } */
+/* { dg-options "isa>=4" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "movz" } } */
/* { dg-final { scan-assembler "movn" } } */
diff --git a/gcc/testsuite/gcc.target/mips/movcc-3.c b/gcc/testsuite/gcc.target/mips/movcc-3.c
index e6481777add..a1ddf57fb06 100644
--- a/gcc/testsuite/gcc.target/mips/movcc-3.c
+++ b/gcc/testsuite/gcc.target/mips/movcc-3.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa>=4 -mhard-float" } */
+/* { dg-options "isa>=4 -mhard-float" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "movt" } } */
/* { dg-final { scan-assembler "movf" } } */
/* { dg-final { scan-assembler "movz.s" } } */
diff --git a/gcc/testsuite/gcc.target/mips/msub-1.c b/gcc/testsuite/gcc.target/mips/msub-1.c
index 803ea77df74..9a222bfda9d 100644
--- a/gcc/testsuite/gcc.target/mips/msub-1.c
+++ b/gcc/testsuite/gcc.target/mips/msub-1.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr5400 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-march=vr5400 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmsac\t\\\$0," 2 } } */
NOMIPS16 long long
diff --git a/gcc/testsuite/gcc.target/mips/msub-2.c b/gcc/testsuite/gcc.target/mips/msub-2.c
index e6cdc2c1a9a..c0923cd113d 100644
--- a/gcc/testsuite/gcc.target/mips/msub-2.c
+++ b/gcc/testsuite/gcc.target/mips/msub-2.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr5500 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-march=vr5500 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmsub\t" 2 } } */
NOMIPS16 long long
diff --git a/gcc/testsuite/gcc.target/mips/msub-3.c b/gcc/testsuite/gcc.target/mips/msub-3.c
index c44f34f4f0e..aedd04302ac 100644
--- a/gcc/testsuite/gcc.target/mips/msub-3.c
+++ b/gcc/testsuite/gcc.target/mips/msub-3.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa_rev>=1 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "isa_rev>=1 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmsub\t" 2 } } */
NOMIPS16 long long
diff --git a/gcc/testsuite/gcc.target/mips/msub-4.c b/gcc/testsuite/gcc.target/mips/msub-4.c
index d41c3129914..84cb5fe333c 100644
--- a/gcc/testsuite/gcc.target/mips/msub-4.c
+++ b/gcc/testsuite/gcc.target/mips/msub-4.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mdspr2 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-mdspr2 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmsub\t\\\$ac" 2 } } */
NOMIPS16 long long
diff --git a/gcc/testsuite/gcc.target/mips/msub-5.c b/gcc/testsuite/gcc.target/mips/msub-5.c
index dcb124a7198..eba104c7f01 100644
--- a/gcc/testsuite/gcc.target/mips/msub-5.c
+++ b/gcc/testsuite/gcc.target/mips/msub-5.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O2 -march=5kc" } */
+/* { dg-options "-march=5kc" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmsub\t" 4 } } */
/* { dg-final { scan-assembler-not "\tmtlo\t" } } */
/* { dg-final { scan-assembler-times "\tmflo\t" 3 } } */
diff --git a/gcc/testsuite/gcc.target/mips/msub-6.c b/gcc/testsuite/gcc.target/mips/msub-6.c
index ee4ca3d8da0..32411e61faf 100644
--- a/gcc/testsuite/gcc.target/mips/msub-6.c
+++ b/gcc/testsuite/gcc.target/mips/msub-6.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O2 -march=5kc" } */
+/* { dg-options "-march=5kc" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tmsub\t" } } */
/* { dg-final { scan-assembler "\tmul\t" } } */
/* { dg-final { scan-assembler "\tsubu\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/msub-7.c b/gcc/testsuite/gcc.target/mips/msub-7.c
index 7ae96acb42e..ee049876e37 100644
--- a/gcc/testsuite/gcc.target/mips/msub-7.c
+++ b/gcc/testsuite/gcc.target/mips/msub-7.c
@@ -1,4 +1,6 @@
-/* { dg-options "-O2 -march=5kc" } */
+/* { dg-options "-march=5kc" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-skip-if "requires -fira-region=all or =mixed" { *-*-* } { "-Os" } { "" } } */
/* { dg-final { scan-assembler-not "\tmul\t" } } */
/* { dg-final { scan-assembler "\tmsub\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/msub-8.c b/gcc/testsuite/gcc.target/mips/msub-8.c
index 49d67f24a6c..a66307f1041 100644
--- a/gcc/testsuite/gcc.target/mips/msub-8.c
+++ b/gcc/testsuite/gcc.target/mips/msub-8.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O2 -march=5kc" } */
+/* { dg-options "-march=5kc" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmul\t" } } */
/* { dg-final { scan-assembler-not "\tmsub\t" } } */
/* { dg-final { scan-assembler-not "\tmtlo\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/msubu-1.c b/gcc/testsuite/gcc.target/mips/msubu-1.c
index ae804034644..e1146f8bca9 100644
--- a/gcc/testsuite/gcc.target/mips/msubu-1.c
+++ b/gcc/testsuite/gcc.target/mips/msubu-1.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr5400 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-march=vr5400 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmsacu\t\\\$0," 2 } } */
typedef unsigned int ui;
diff --git a/gcc/testsuite/gcc.target/mips/msubu-2.c b/gcc/testsuite/gcc.target/mips/msubu-2.c
index 186dc47d6f7..642d1239460 100644
--- a/gcc/testsuite/gcc.target/mips/msubu-2.c
+++ b/gcc/testsuite/gcc.target/mips/msubu-2.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr5500 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-march=vr5500 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmsubu\t" 2 } } */
typedef unsigned int ui;
diff --git a/gcc/testsuite/gcc.target/mips/msubu-3.c b/gcc/testsuite/gcc.target/mips/msubu-3.c
index 272c64818e3..2e936ebe03f 100644
--- a/gcc/testsuite/gcc.target/mips/msubu-3.c
+++ b/gcc/testsuite/gcc.target/mips/msubu-3.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa_rev>=1 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "isa_rev>=1 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmsubu\t" 2 } } */
typedef unsigned int ui;
diff --git a/gcc/testsuite/gcc.target/mips/msubu-4.c b/gcc/testsuite/gcc.target/mips/msubu-4.c
index 8f5fd647b37..a4f6118600e 100644
--- a/gcc/testsuite/gcc.target/mips/msubu-4.c
+++ b/gcc/testsuite/gcc.target/mips/msubu-4.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mdspr2 -mgp32" } */
+/* This test requires widening_mul */
+/* { dg-options "-mdspr2 -mgp32 -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tmsubu\t\\\$ac" 2 } } */
typedef unsigned int ui;
diff --git a/gcc/testsuite/gcc.target/mips/mult-1.c b/gcc/testsuite/gcc.target/mips/mult-1.c
index 8630ec95d5e..1038797f228 100644
--- a/gcc/testsuite/gcc.target/mips/mult-1.c
+++ b/gcc/testsuite/gcc.target/mips/mult-1.c
@@ -1,6 +1,8 @@
/* For SI->DI widening multiplication we should use DINS to combine the two
halves. For Octeon use DMUL with explicit widening. */
-/* { dg-options "-O2 -mgp64 isa_rev>=2 forbid_cpu=octeon.*" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp64 isa_rev>=2 forbid_cpu=octeon.* -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdins\t" } } */
/* { dg-final { scan-assembler-not "\tdsll\t" } } */
/* { dg-final { scan-assembler-not "\tdsrl\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-10.c b/gcc/testsuite/gcc.target/mips/mult-10.c
index 0b990c36413..c479ebbc553 100644
--- a/gcc/testsuite/gcc.target/mips/mult-10.c
+++ b/gcc/testsuite/gcc.target/mips/mult-10.c
@@ -1,4 +1,6 @@
-/* { dg-options "-O2 -mgp64 (-mips16)" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp64 (-mips16) -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmult\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" { xfail *-*-* } } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-11.c b/gcc/testsuite/gcc.target/mips/mult-11.c
index d2ba695f6dd..8b26c1de7a4 100644
--- a/gcc/testsuite/gcc.target/mips/mult-11.c
+++ b/gcc/testsuite/gcc.target/mips/mult-11.c
@@ -1,4 +1,6 @@
-/* { dg-options "-O2 -mgp64 (-mips16)" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp64 (-mips16) -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmultu\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-12.c b/gcc/testsuite/gcc.target/mips/mult-12.c
index bd772d2cd74..bf8d36c7629 100644
--- a/gcc/testsuite/gcc.target/mips/mult-12.c
+++ b/gcc/testsuite/gcc.target/mips/mult-12.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmultu?\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-13.c b/gcc/testsuite/gcc.target/mips/mult-13.c
index e0859f629f3..beb6ab9432c 100644
--- a/gcc/testsuite/gcc.target/mips/mult-13.c
+++ b/gcc/testsuite/gcc.target/mips/mult-13.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmultu?\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-14.c b/gcc/testsuite/gcc.target/mips/mult-14.c
index c4b54b7ec45..e3cbd75bf28 100644
--- a/gcc/testsuite/gcc.target/mips/mult-14.c
+++ b/gcc/testsuite/gcc.target/mips/mult-14.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp32 (-mips16)" } */
+/* { dg-options "-mgp32 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmult\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-15.c b/gcc/testsuite/gcc.target/mips/mult-15.c
index a96049e04e6..da47bd29227 100644
--- a/gcc/testsuite/gcc.target/mips/mult-15.c
+++ b/gcc/testsuite/gcc.target/mips/mult-15.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp32 (-mips16)" } */
+/* { dg-options "-mgp32 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmultu\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-16.c b/gcc/testsuite/gcc.target/mips/mult-16.c
index cb1707d9125..3e9b3785b1b 100644
--- a/gcc/testsuite/gcc.target/mips/mult-16.c
+++ b/gcc/testsuite/gcc.target/mips/mult-16.c
@@ -1,4 +1,6 @@
-/* { dg-options "-O2 -mgp32 (-mips16)" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp32 (-mips16) -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmult\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-17.c b/gcc/testsuite/gcc.target/mips/mult-17.c
index 3539f63d96a..84baff8cd8c 100644
--- a/gcc/testsuite/gcc.target/mips/mult-17.c
+++ b/gcc/testsuite/gcc.target/mips/mult-17.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp32 (-mips16)" } */
+/* { dg-options "-mgp32 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmultu\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-18.c b/gcc/testsuite/gcc.target/mips/mult-18.c
index cfdac8b0de1..52487f30dff 100644
--- a/gcc/testsuite/gcc.target/mips/mult-18.c
+++ b/gcc/testsuite/gcc.target/mips/mult-18.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp32 (-mips16)" } */
+/* { dg-options "-mgp32 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmultu?\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-19.c b/gcc/testsuite/gcc.target/mips/mult-19.c
index 47cdd5c23c3..11cdb17c867 100644
--- a/gcc/testsuite/gcc.target/mips/mult-19.c
+++ b/gcc/testsuite/gcc.target/mips/mult-19.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp32 (-mips16)" } */
+/* { dg-options "-mgp32 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmultu?\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-2.c b/gcc/testsuite/gcc.target/mips/mult-2.c
index 8494e14c358..77be3116273 100644
--- a/gcc/testsuite/gcc.target/mips/mult-2.c
+++ b/gcc/testsuite/gcc.target/mips/mult-2.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdmult\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-3.c b/gcc/testsuite/gcc.target/mips/mult-3.c
index fa7cfa34e23..e46978bc409 100644
--- a/gcc/testsuite/gcc.target/mips/mult-3.c
+++ b/gcc/testsuite/gcc.target/mips/mult-3.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdmultu\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-4.c b/gcc/testsuite/gcc.target/mips/mult-4.c
index d579f0023d2..939ca5cdb40 100644
--- a/gcc/testsuite/gcc.target/mips/mult-4.c
+++ b/gcc/testsuite/gcc.target/mips/mult-4.c
@@ -1,4 +1,6 @@
-/* { dg-options "-O2 -mgp64 (-mips16)" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp64 (-mips16) -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdmult\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-5.c b/gcc/testsuite/gcc.target/mips/mult-5.c
index 6df86a1163d..efb06af8559 100644
--- a/gcc/testsuite/gcc.target/mips/mult-5.c
+++ b/gcc/testsuite/gcc.target/mips/mult-5.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdmultu\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-6.c b/gcc/testsuite/gcc.target/mips/mult-6.c
index a6b910ec402..82d4f5d453a 100644
--- a/gcc/testsuite/gcc.target/mips/mult-6.c
+++ b/gcc/testsuite/gcc.target/mips/mult-6.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdmultu?\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-7.c b/gcc/testsuite/gcc.target/mips/mult-7.c
index 7c2989baa52..35b07498070 100644
--- a/gcc/testsuite/gcc.target/mips/mult-7.c
+++ b/gcc/testsuite/gcc.target/mips/mult-7.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64 (-mips16)" } */
+/* { dg-options "-mgp64 (-mips16)" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdmultu?\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-8.c b/gcc/testsuite/gcc.target/mips/mult-8.c
index 3e3acde81e3..18dce2013d6 100644
--- a/gcc/testsuite/gcc.target/mips/mult-8.c
+++ b/gcc/testsuite/gcc.target/mips/mult-8.c
@@ -1,4 +1,6 @@
-/* { dg-options "-O2 -mgp64 (-mips16)" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp64 (-mips16) -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmult\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/mult-9.c b/gcc/testsuite/gcc.target/mips/mult-9.c
index aa2ededa67a..59d450ab2c0 100644
--- a/gcc/testsuite/gcc.target/mips/mult-9.c
+++ b/gcc/testsuite/gcc.target/mips/mult-9.c
@@ -1,4 +1,6 @@
-/* { dg-options "-O2 -mgp64 (-mips16)" } */
+/* This test requires widening_mul */
+/* { dg-options "-mgp64 (-mips16) -fexpensive-optimizations" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tmultu\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/near-far-3.c b/gcc/testsuite/gcc.target/mips/near-far-3.c
index f4ae791f1a0..d4d48b1ed53 100644
--- a/gcc/testsuite/gcc.target/mips/near-far-3.c
+++ b/gcc/testsuite/gcc.target/mips/near-far-3.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-mlong-calls addressing=absolute -O2" } */
+/* { dg-options "-mlong-calls addressing=absolute" } */
NOMIPS16 extern int long_call_func () __attribute__((long_call));
NOMIPS16 extern int far_func () __attribute__((far));
@@ -13,5 +13,5 @@ NOMIPS16 int test4 () { return normal_func (); }
/* { dg-final { scan-assembler-not "\tj\tlong_call_func\n" } } */
/* { dg-final { scan-assembler-not "\tj\tfar_func\n" } } */
-/* { dg-final { scan-assembler "\tj\tnear_func\n" } } */
+/* { dg-final { scan-assembler "\tj(|al)\tnear_func\n" } } */
/* { dg-final { scan-assembler-not "\tj\tnormal_func\n" } } */
diff --git a/gcc/testsuite/gcc.target/mips/near-far-4.c b/gcc/testsuite/gcc.target/mips/near-far-4.c
index b9aa21fe4f4..0ea07b06205 100644
--- a/gcc/testsuite/gcc.target/mips/near-far-4.c
+++ b/gcc/testsuite/gcc.target/mips/near-far-4.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-mno-long-calls addressing=absolute -O2" } */
+/* { dg-options "-mno-long-calls addressing=absolute" } */
NOMIPS16 extern int long_call_func () __attribute__((long_call));
NOMIPS16 extern int far_func () __attribute__((far));
@@ -13,5 +13,5 @@ NOMIPS16 int test4 () { return normal_func (); }
/* { dg-final { scan-assembler-not "\tj\tlong_call_func\n" } } */
/* { dg-final { scan-assembler-not "\tj\tfar_func\n" } } */
-/* { dg-final { scan-assembler "\tj\tnear_func\n" } } */
-/* { dg-final { scan-assembler "\tj\tnormal_func\n" } } */
+/* { dg-final { scan-assembler "\tj(|al)\tnear_func\n" } } */
+/* { dg-final { scan-assembler "\tj(|al)\tnormal_func\n" } } */
diff --git a/gcc/testsuite/gcc.target/mips/neg-abs-1.c b/gcc/testsuite/gcc.target/mips/neg-abs-1.c
index 20691ff2c4b..6c942586455 100644
--- a/gcc/testsuite/gcc.target/mips/neg-abs-1.c
+++ b/gcc/testsuite/gcc.target/mips/neg-abs-1.c
@@ -1,7 +1,7 @@
/* Make sure that we use abs.fmt and neg.fmt when the signs of NaNs don't
matter. */
/* { dg-do compile } */
-/* { dg-options "-O2 -mhard-float -ffinite-math-only" } */
+/* { dg-options "-mhard-float -ffinite-math-only" } */
/* { dg-final { scan-assembler "neg.s" } } */
/* { dg-final { scan-assembler "neg.d" } } */
/* { dg-final { scan-assembler "abs.s" } } */
diff --git a/gcc/testsuite/gcc.target/mips/neg-abs-2.c b/gcc/testsuite/gcc.target/mips/neg-abs-2.c
index 67125f78a67..f34f74320e3 100644
--- a/gcc/testsuite/gcc.target/mips/neg-abs-2.c
+++ b/gcc/testsuite/gcc.target/mips/neg-abs-2.c
@@ -1,7 +1,7 @@
/* Make sure that we avoid abs.fmt and neg.fmt when the signs of NaNs
matter. */
/* { dg-do compile } */
-/* { dg-options "-O2 -mhard-float -fno-finite-math-only" } */
+/* { dg-options "-mhard-float -fno-finite-math-only" } */
/* { dg-final { scan-assembler-not "neg.s" } } */
/* { dg-final { scan-assembler-not "neg.d" } } */
/* { dg-final { scan-assembler-not "abs.s" } } */
diff --git a/gcc/testsuite/gcc.target/mips/nmadd-1.c b/gcc/testsuite/gcc.target/mips/nmadd-1.c
index 123d48799ed..46b70820c5b 100644
--- a/gcc/testsuite/gcc.target/mips/nmadd-1.c
+++ b/gcc/testsuite/gcc.target/mips/nmadd-1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ffast-math isa=4 -mhard-float" } */
+/* { dg-options "-ffast-math isa=4 -mhard-float" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "nmadd.s" } } */
/* { dg-final { scan-assembler "nmadd.d" } } */
/* { dg-final { scan-assembler "nmsub.s" } } */
diff --git a/gcc/testsuite/gcc.target/mips/nmadd-2.c b/gcc/testsuite/gcc.target/mips/nmadd-2.c
index 90e4d838d89..dee6fcb3ece 100644
--- a/gcc/testsuite/gcc.target/mips/nmadd-2.c
+++ b/gcc/testsuite/gcc.target/mips/nmadd-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fno-fast-math -ffinite-math-only isa=4 -mhard-float" } */
+/* { dg-options "-fno-fast-math -ffinite-math-only isa=4 -mhard-float" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "nmadd.s" } } */
/* { dg-final { scan-assembler "nmadd.d" } } */
/* { dg-final { scan-assembler "nmsub.s" } } */
diff --git a/gcc/testsuite/gcc.target/mips/nmadd-3.c b/gcc/testsuite/gcc.target/mips/nmadd-3.c
index df726186128..c553fb7065a 100644
--- a/gcc/testsuite/gcc.target/mips/nmadd-3.c
+++ b/gcc/testsuite/gcc.target/mips/nmadd-3.c
@@ -1,7 +1,7 @@
/* The same code as nmadd-2.c, but compiled with -fno-finite-math-only.
We can't use nmadd and nmsub in that case. */
/* { dg-do compile } */
-/* { dg-options "-O2 -fno-fast-math -fno-finite-math-only isa=4 -mhard-float" } */
+/* { dg-options "-fno-fast-math -fno-finite-math-only isa=4 -mhard-float" } */
/* { dg-final { scan-assembler-not "nmadd.s" } } */
/* { dg-final { scan-assembler-not "nmadd.d" } } */
/* { dg-final { scan-assembler-not "nmsub.s" } } */
diff --git a/gcc/testsuite/gcc.target/mips/no-dsp-1.c b/gcc/testsuite/gcc.target/mips/no-dsp-1.c
index 093037579b9..c4a7b0aede2 100644
--- a/gcc/testsuite/gcc.target/mips/no-dsp-1.c
+++ b/gcc/testsuite/gcc.target/mips/no-dsp-1.c
@@ -1,7 +1,8 @@
-/* { dg-options "-mno-dsp" } */
+/* { dg-options "-mno-dsp -ffat-lto-objects" } */
void
foo (void)
{
register int x asm ("$ac1hi"); /* { dg-error "cannot be accessed" } */
+ asm volatile ("" : "=r" (x));
}
diff --git a/gcc/testsuite/gcc.target/mips/no-smartmips-lwxs.c b/gcc/testsuite/gcc.target/mips/no-smartmips-lwxs.c
index ee7f3d54d5d..ecf856ea7fa 100644
--- a/gcc/testsuite/gcc.target/mips/no-smartmips-lwxs.c
+++ b/gcc/testsuite/gcc.target/mips/no-smartmips-lwxs.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -mno-smartmips" } */
+/* { dg-options "-mno-smartmips" } */
NOMIPS16 int scaled_indexed_word_load (int a[], int b)
{
diff --git a/gcc/testsuite/gcc.target/mips/no-smartmips-ror-1.c b/gcc/testsuite/gcc.target/mips/no-smartmips-ror-1.c
index d1f50a8fbef..419d086b8af 100644
--- a/gcc/testsuite/gcc.target/mips/no-smartmips-ror-1.c
+++ b/gcc/testsuite/gcc.target/mips/no-smartmips-ror-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -mno-smartmips -march=mips32" } */
+/* { dg-options "-mno-smartmips -march=mips32" } */
NOMIPS16 int rotate_left (unsigned a, unsigned s)
{
diff --git a/gcc/testsuite/gcc.target/mips/octeon-baddu-1.c b/gcc/testsuite/gcc.target/mips/octeon-baddu-1.c
index 8dd5be16765..e7150d29733 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-baddu-1.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-baddu-1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -march=octeon" } */
+/* { dg-options "-march=octeon" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tbaddu\t" 4 } } */
/* { dg-final { scan-assembler-not "\tandi\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/octeon-bbit-1.c b/gcc/testsuite/gcc.target/mips/octeon-bbit-1.c
index 6629dbb5844..f91c68bcdcc 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-bbit-1.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-bbit-1.c
@@ -1,7 +1,9 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=octeon" } */
-/* { dg-final { scan-assembler-times "\tbbit1\t" 4 } } */
-/* { dg-final { scan-assembler-times "\tbbit0\t" 2 } } */
+/* { dg-options "-march=octeon" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+/* { dg-final { scan-assembler "\tbbit1\t" } } */
+/* { dg-final { scan-assembler "\tbbit0\t" } } */
+/* { dg-final { scan-assembler-times "\tbbit.\t" 6 } } */
/* { dg-final { scan-assembler-not "andi\t" } } */
NOMIPS16 void foo (void);
diff --git a/gcc/testsuite/gcc.target/mips/octeon-bbit-2.c b/gcc/testsuite/gcc.target/mips/octeon-bbit-2.c
index 55bf23eae4e..9bd8dce107a 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-bbit-2.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-bbit-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=octeon -mbranch-likely" } */
+/* { dg-options "-march=octeon -mbranch-likely -fno-unroll-loops" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tbbit\[01\]\t" } } */
/* { dg-final { scan-assembler-not "\tbbit\[01\]l\t" } } */
/* { dg-final { scan-assembler "\tbnel\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/octeon-bbit-3.c b/gcc/testsuite/gcc.target/mips/octeon-bbit-3.c
index bcc37d29e34..2726037bee1 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-bbit-3.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-bbit-3.c
@@ -11,9 +11,10 @@
which does not get recognized as a valid bbit pattern. The
middle-end should be able to simplify this further. */
-/* { dg-options "-O2 -march=octeon -meb" } */
+/* { dg-options "-march=octeon -meb" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
-/* { dg-final { scan-assembler-times "\tbbit\[01\]\t|\tbgez\t" 2 } } */
+/* { dg-final { scan-assembler-times "\tbbit\[01\]\t|\tbgez\t|\tbltz\t" 2 } } */
/* { dg-final { scan-assembler-not "ext\t" } } */
void abort (void);
diff --git a/gcc/testsuite/gcc.target/mips/octeon-cins-1.c b/gcc/testsuite/gcc.target/mips/octeon-cins-1.c
index ac85e237846..dd0b753ec07 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-cins-1.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-cins-1.c
@@ -1,7 +1,8 @@
/* { dg-do compile } */
/* The tests also work with -mgp32. For long long tests, only one of
the 32-bit parts is used. */
-/* { dg-options "-O -march=octeon" } */
+/* { dg-options "-march=octeon" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tcins\t" 3 } } */
/* { dg-final { scan-assembler-not "\tandi\t|sll\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/octeon-cins-2.c b/gcc/testsuite/gcc.target/mips/octeon-cins-2.c
index 2dcff0aad1c..71611bc9ff2 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-cins-2.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-cins-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -march=octeon -mgp64" } */
+/* { dg-options "-march=octeon -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tcins\t" } } */
NOMIPS16 unsigned
diff --git a/gcc/testsuite/gcc.target/mips/octeon-dmul-2.c b/gcc/testsuite/gcc.target/mips/octeon-dmul-2.c
index 6b2308c0bba..cf8da24ca71 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-dmul-2.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-dmul-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-march=octeon -mgp64" } */
+/* { dg-skip-if "using DMUL is no worse size-wise, and can be better if the constant is used elsewhere" { *-*-* } { "-Os" } { "" } } */
/* { dg-final { scan-assembler-not "\tdmul" } } */
NOMIPS16 long long
diff --git a/gcc/testsuite/gcc.target/mips/octeon-dmul-3.c b/gcc/testsuite/gcc.target/mips/octeon-dmul-3.c
index 01f0eefca80..38150a87ec1 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-dmul-3.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-dmul-3.c
@@ -1,5 +1,6 @@
/* Use DMUL for widening multiplication too. */
-/* { dg-options "-O -march=octeon -mgp64" } */
+/* { dg-options "-march=octeon -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tdmul\t" 2 } } */
/* { dg-final { scan-assembler-not "\td?mult\t" } } */
/* { dg-final { scan-assembler-times "\tdext\t" 2 } } */
diff --git a/gcc/testsuite/gcc.target/mips/octeon-exts-2.c b/gcc/testsuite/gcc.target/mips/octeon-exts-2.c
index fc5df639d02..21353d90612 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-exts-2.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-exts-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -march=octeon -meb" } */
+/* { dg-options "-march=octeon -meb" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\texts\t" 4 } } */
struct bar
diff --git a/gcc/testsuite/gcc.target/mips/octeon-exts-3.c b/gcc/testsuite/gcc.target/mips/octeon-exts-3.c
index 9d0e9302a54..be041989070 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-exts-3.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-exts-3.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -march=octeon -mgp64" } */
+/* { dg-options "-march=octeon -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\texts\t" 3 } } */
struct foo
diff --git a/gcc/testsuite/gcc.target/mips/octeon-exts-4.c b/gcc/testsuite/gcc.target/mips/octeon-exts-4.c
index 7e6a578a19c..0071ae173bc 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-exts-4.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-exts-4.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -march=octeon -mgp64" } */
+/* { dg-options "-march=octeon -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tsll\t\[^\n\]*,0" } } */
/* { dg-final { scan-assembler-times "\texts\t" 6 } } */
diff --git a/gcc/testsuite/gcc.target/mips/octeon-exts-5.c b/gcc/testsuite/gcc.target/mips/octeon-exts-5.c
index e7a4738b96f..0e587d7eb29 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-exts-5.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-exts-5.c
@@ -1,6 +1,7 @@
/* -mel version of octeon-exts-2.c. */
/* { dg-do compile } */
-/* { dg-options "-O -march=octeon -mel" } */
+/* { dg-options "-march=octeon -mel" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\texts\t" 4 } } */
struct bar
diff --git a/gcc/testsuite/gcc.target/mips/octeon-exts-6.c b/gcc/testsuite/gcc.target/mips/octeon-exts-6.c
index d37ed95559d..b8da271ae31 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-exts-6.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-exts-6.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -march=octeon -mgp64" } */
+/* { dg-options "-march=octeon -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\texts\t" 5 } } */
/* { dg-final { scan-assembler-not "\t(dsll|dsra)\t" } } */
/* { dg-final { scan-assembler-not "\tsll\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/octeon-exts-7.c b/gcc/testsuite/gcc.target/mips/octeon-exts-7.c
index 04805d06de4..d22a4b3c942 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-exts-7.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-exts-7.c
@@ -1,6 +1,7 @@
/* Remove the redundant sign-extension after the sign-extraction. */
/* { dg-do compile } */
-/* { dg-options "-O -march=octeon -mgp64" } */
+/* { dg-options "-march=octeon -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\texts\t" 1 } } */
/* { dg-final { scan-assembler-not "sll|sra" } } */
diff --git a/gcc/testsuite/gcc.target/mips/octeon-pipe-1.c b/gcc/testsuite/gcc.target/mips/octeon-pipe-1.c
index 3c9d926d602..4488e3d5117 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-pipe-1.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-pipe-1.c
@@ -1,6 +1,7 @@
/* Check that we use the octeon pipeline description. */
/* { dg-do compile } */
-/* { dg-options "-O2 -march=octeon -fdump-rtl-sched2" } */
+/* { dg-options "-march=octeon -fschedule-insns2 -fdump-rtl-sched2" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 int f (int a, int b)
{
diff --git a/gcc/testsuite/gcc.target/mips/octeon-pop-1.c b/gcc/testsuite/gcc.target/mips/octeon-pop-1.c
index 54d2e9c04aa..6a6791ce617 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-pop-1.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-pop-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -march=octeon -mgp64" } */
+/* { dg-options "-march=octeon -mgp64" } */
/* { dg-final { scan-assembler "\tpop\t" } } */
/* { dg-final { scan-assembler "\tdpop\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/octeon-pop-2.c b/gcc/testsuite/gcc.target/mips/octeon-pop-2.c
index 8acd9359752..63a73b34836 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-pop-2.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-pop-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -march=octeon -mgp64" } */
+/* { dg-options "-march=octeon -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* The pop instruction does not depend on the word value to be sign extended. */
/* { dg-final { scan-assembler-not "sll\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/octeon-seq-3.c b/gcc/testsuite/gcc.target/mips/octeon-seq-3.c
index 899f145844b..71e09dc6f0e 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-seq-3.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-seq-3.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -march=octeon -mgp64" } */
+/* { dg-options "-march=octeon -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "and\t\|andi\t\|ext\t\|sll\t\|srl\t" } } */
/* { dg-final { scan-assembler-times "\tseqi\t\|\tsnei\t" 4 } } */
diff --git a/gcc/testsuite/gcc.target/mips/octeon-seq-4.c b/gcc/testsuite/gcc.target/mips/octeon-seq-4.c
index e61bcb361c0..7069e405028 100644
--- a/gcc/testsuite/gcc.target/mips/octeon-seq-4.c
+++ b/gcc/testsuite/gcc.target/mips/octeon-seq-4.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=octeon" } */
+/* { dg-options "-march=octeon" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "xor" } } */
unsigned
diff --git a/gcc/testsuite/gcc.target/mips/octeon2-lx-1.c b/gcc/testsuite/gcc.target/mips/octeon2-lx-1.c
index 34d8af8521f..445e3fc2e7e 100644
--- a/gcc/testsuite/gcc.target/mips/octeon2-lx-1.c
+++ b/gcc/testsuite/gcc.target/mips/octeon2-lx-1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-march=octeon2 -O -mgp64" } */
+/* { dg-options "-march=octeon2 -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
#define TEST(N, R, T) \
T fll##N (T j, signed R *b, long long i) { return j + b[i]; } \
diff --git a/gcc/testsuite/gcc.target/mips/octeon2-lx-2.c b/gcc/testsuite/gcc.target/mips/octeon2-lx-2.c
index 521a71f961b..b487637bec1 100644
--- a/gcc/testsuite/gcc.target/mips/octeon2-lx-2.c
+++ b/gcc/testsuite/gcc.target/mips/octeon2-lx-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-march=octeon2 -O -mgp64" } */
+/* { dg-options "-march=octeon2 -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
#define TEST(N, T) \
T f##N (T *p, int i) { return p[i]; } \
diff --git a/gcc/testsuite/gcc.target/mips/octeon2-lx-3.c b/gcc/testsuite/gcc.target/mips/octeon2-lx-3.c
index 51d2e1031cc..110cf8bd7f1 100644
--- a/gcc/testsuite/gcc.target/mips/octeon2-lx-3.c
+++ b/gcc/testsuite/gcc.target/mips/octeon2-lx-3.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-march=octeon2 -O -mgp32" } */
+/* { dg-options "-march=octeon2 -mgp32" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
#define TEST(N, T) \
T f##N (T *p, int i) { return p[i]; } \
diff --git a/gcc/testsuite/gcc.target/mips/octeon2-pipe-1.c b/gcc/testsuite/gcc.target/mips/octeon2-pipe-1.c
index dc665dd7399..18fd966715d 100644
--- a/gcc/testsuite/gcc.target/mips/octeon2-pipe-1.c
+++ b/gcc/testsuite/gcc.target/mips/octeon2-pipe-1.c
@@ -1,6 +1,7 @@
/* Check that we use the octeon2 pipeline description. */
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-rtl-sched2 -march=octeon2" } */
+/* { dg-options "-fschedule-insns2 -fdump-rtl-sched2 -march=octeon2" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 int f (int a, int b)
{
diff --git a/gcc/testsuite/gcc.target/mips/pr26765.c b/gcc/testsuite/gcc.target/mips/pr26765.c
index 25c2e8d4c83..c4716cff5ba 100644
--- a/gcc/testsuite/gcc.target/mips/pr26765.c
+++ b/gcc/testsuite/gcc.target/mips/pr26765.c
@@ -2,7 +2,7 @@
This testcase used to trigger an unrecognizable insn. */
/* { dg-do compile } */
-/* { dg-options "-O2 -w" } */
+/* { dg-options "-w" } */
__thread int *a = 0;
diff --git a/gcc/testsuite/gcc.target/mips/pr33256.c b/gcc/testsuite/gcc.target/mips/pr33256.c
index ead5888cc07..109da4899ef 100644
--- a/gcc/testsuite/gcc.target/mips/pr33256.c
+++ b/gcc/testsuite/gcc.target/mips/pr33256.c
@@ -1,6 +1,6 @@
/* GCC used to report an ICE for this test because we generated a LO_SUM
for an illegitimate constant. */
-/* { dg-options "-mabi=64 -msym32 -O2 -EB -mno-abicalls" } */
+/* { dg-options "-mabi=64 -msym32 -EB -mno-abicalls" } */
extern unsigned long a[];
int b (int);
diff --git a/gcc/testsuite/gcc.target/mips/pr33635-1.c b/gcc/testsuite/gcc.target/mips/pr33635-1.c
index 78e761f71c5..f849b396ea0 100644
--- a/gcc/testsuite/gcc.target/mips/pr33635-1.c
+++ b/gcc/testsuite/gcc.target/mips/pr33635-1.c
@@ -1,4 +1,4 @@
-/* { dg-options "-mabi=64 -O2" } */
+/* { dg-options "-mabi=64" } */
NOMIPS16 long double __powitf2 (long double x, int m)
{
diff --git a/gcc/testsuite/gcc.target/mips/pr33755.c b/gcc/testsuite/gcc.target/mips/pr33755.c
index ca6a1e6984d..c3e2cbfd7d6 100644
--- a/gcc/testsuite/gcc.target/mips/pr33755.c
+++ b/gcc/testsuite/gcc.target/mips/pr33755.c
@@ -1,5 +1,4 @@
/* { dg-do link } */
-/* { dg-options "-O2" } */
volatile int gv;
const char *ptrs[2];
diff --git a/gcc/testsuite/gcc.target/mips/pr35802.c b/gcc/testsuite/gcc.target/mips/pr35802.c
index 9ecc4d06ea6..acdfaebe338 100644
--- a/gcc/testsuite/gcc.target/mips/pr35802.c
+++ b/gcc/testsuite/gcc.target/mips/pr35802.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -march=74kc -mgp32" } */
+/* { dg-options "-march=74kc -mgp32" } */
__thread int x __attribute__((tls_model("initial-exec")));
__thread int y __attribute__((tls_model("initial-exec")));
diff --git a/gcc/testsuite/gcc.target/mips/pr45074.c b/gcc/testsuite/gcc.target/mips/pr45074.c
index ba578c838c1..129467fb022 100644
--- a/gcc/testsuite/gcc.target/mips/pr45074.c
+++ b/gcc/testsuite/gcc.target/mips/pr45074.c
@@ -1,4 +1,4 @@
-/* { dg-options "-mhard-float -mgp32 -O" } */
+/* { dg-options "-mhard-float -mgp32" } */
register double g __asm__("$f20");
NOMIPS16 void
diff --git a/gcc/testsuite/gcc.target/mips/pr54240.c b/gcc/testsuite/gcc.target/mips/pr54240.c
index e932d5ebcd6..65088b52ccd 100644
--- a/gcc/testsuite/gcc.target/mips/pr54240.c
+++ b/gcc/testsuite/gcc.target/mips/pr54240.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-phiopt-details isa>=4" } */
+/* { dg-options "-fdump-tree-phiopt-details isa>=4" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" "-O1" } { "" } } */
typedef struct s {
int v;
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-1.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-1.c
index b271e2bf416..b5ffd0aebb8 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-1.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-1.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mabi=64 -mr10k-cache-barrier=store" } */
+/* { dg-options "-mabi=64 -mr10k-cache-barrier=store" } */
/* Test that stores to uncached addresses do not get unnecessary
cache barriers. */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-10.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-10.c
index 68c4b7ef239..1b8c6f4ab49 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-10.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-10.c
@@ -1,18 +1,20 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -mips4 -mbranch-likely -mno-abicalls" } */
-int bar (int);
+/* { dg-options "-mr10k-cache-barrier=store -mips4 -mbranch-likely -mno-abicalls" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+
+unsigned char *bar (int);
/* Test that code after a branch-likely does not get an unnecessary
cache barrier. */
NOMIPS16 void
-foo (int n, int *x)
+foo (unsigned char *n)
{
do
- n = bar (n * 4 + 1);
+ n = bar (*n + 1);
while (n);
/* The preceding branch should be a branch likely, with the shift as
its delay slot. We therefore don't need a cache barrier here. */
- x[0] = 0;
+ n[0] = 0;
}
/* { dg-final { scan-assembler-not "\tcache\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-11.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-11.c
index d1082d910d8..936c2589d32 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-11.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-11.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -mno-abicalls" } */
+/* { dg-options "-mr10k-cache-barrier=store -mno-abicalls" } */
/* Test that loads are not unnecessarily protected. */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-12.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-12.c
index d4163910900..34a12489cbb 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-12.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-12.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=load-store -mno-abicalls" } */
+/* { dg-options "-mr10k-cache-barrier=load-store -mno-abicalls" } */
/* Test that loads are correctly protected. */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-13.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-13.c
index 3e955abf549..ee9c84b5988 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-13.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-13.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store" } */
+/* { dg-options "-mr10k-cache-barrier=store" } */
/* Test that indirect calls are protected. */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-14.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-14.c
index 1fdcee0e25a..92c37f497c6 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-14.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-14.c
@@ -1,4 +1,4 @@
-/* { dg-options "(-mips16) -O2 -mr10k-cache-barrier=store" } */
+/* { dg-options "(-mips16) -mr10k-cache-barrier=store -ffat-lto-objects" } */
/* Test that indirect calls are protected. */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-15.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-15.c
index a3e7f0db92c..da655cda147 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-15.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-15.c
@@ -1,2 +1,2 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -mips2" } */
+/* { dg-options "-mr10k-cache-barrier=store -mips2" } */
/* { dg-error "requires.*cache.*instruction" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-2.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-2.c
index 3d06d0ddb6e..ebf45f94f31 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-2.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-2.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mabi=64 -mr10k-cache-barrier=store" } */
+/* { dg-options "-mabi=64 -mr10k-cache-barrier=store" } */
/* Test that stores to constant cached addresses are protected
by cache barriers. */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-3.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-3.c
index be2c7fbd76e..9e567898135 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-3.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-3.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -mno-abicalls" } */
+/* { dg-options "-mr10k-cache-barrier=store -mno-abicalls" } */
/* Test that in-range stores to the frame are not protected by
cache barriers. */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-4.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-4.c
index 9dd23eafa78..7780460b2d0 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-4.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-4.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -mno-abicalls" } */
+/* { dg-options "-mr10k-cache-barrier=store -mno-abicalls" } */
void bar (int *x);
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-5.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-5.c
index a6b53a9ea34..757beefc231 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-5.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-5.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -mno-abicalls -mabi=64" } */
+/* { dg-options "-mr10k-cache-barrier=store -mno-abicalls -mabi=64" } */
/* Test that in-range stores to static objects do not get an unnecessary
cache barrier. */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-6.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-6.c
index c52caaa1ad2..32dd78cb584 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-6.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-6.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -mabi=64" } */
+/* { dg-options "-mr10k-cache-barrier=store -mabi=64" } */
int x[4];
void bar (void);
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-7.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-7.c
index 3f738654cc1..3a7a2538eec 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-7.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-7.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -mno-abicalls" } */
+/* { dg-options "-mr10k-cache-barrier=store -mno-abicalls" } */
void bar1 (void);
void bar2 (void);
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-8.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-8.c
index 394bf486f38..121b907233e 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-8.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-8.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -G8" } */
+/* { dg-options "-mr10k-cache-barrier=store -G8" } */
/* Test that in-range stores to components of static objects
do not get an unnecessary cache barrier. */
diff --git a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-9.c b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-9.c
index 67b52f92d35..2f83968aad6 100644
--- a/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-9.c
+++ b/gcc/testsuite/gcc.target/mips/r10k-cache-barrier-9.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -mr10k-cache-barrier=store -G8" } */
+/* { dg-options "-mr10k-cache-barrier=store -G8" } */
/* Test that out-of-range stores to components of static objects
are protected by a cache barrier. */
diff --git a/gcc/testsuite/gcc.target/mips/rsqrt-1.c b/gcc/testsuite/gcc.target/mips/rsqrt-1.c
index f0a9b3aed62..16df42d6d14 100644
--- a/gcc/testsuite/gcc.target/mips/rsqrt-1.c
+++ b/gcc/testsuite/gcc.target/mips/rsqrt-1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ffast-math isa=4 -mhard-float -mgp64" } */
+/* { dg-options "-ffast-math isa=4 -mhard-float -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "rsqrt.d" } } */
/* { dg-final { scan-assembler "rsqrt.s" } } */
diff --git a/gcc/testsuite/gcc.target/mips/rsqrt-2.c b/gcc/testsuite/gcc.target/mips/rsqrt-2.c
index bc81039d523..eae515d173b 100644
--- a/gcc/testsuite/gcc.target/mips/rsqrt-2.c
+++ b/gcc/testsuite/gcc.target/mips/rsqrt-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ffast-math isa=4 -mhard-float -mgp64" } */
+/* { dg-options "-ffast-math isa=4 -mhard-float -mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "rsqrt.d" } } */
/* { dg-final { scan-assembler "rsqrt.s" } } */
diff --git a/gcc/testsuite/gcc.target/mips/rsqrt-3.c b/gcc/testsuite/gcc.target/mips/rsqrt-3.c
index cfa771ef86b..f86249007d8 100644
--- a/gcc/testsuite/gcc.target/mips/rsqrt-3.c
+++ b/gcc/testsuite/gcc.target/mips/rsqrt-3.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 isa=4 -mhard-float" } */
+/* { dg-options "isa=4 -mhard-float" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "rsqrt.d" } } */
/* { dg-final { scan-assembler-not "rsqrt.s" } } */
diff --git a/gcc/testsuite/gcc.target/mips/rsqrt-4.c b/gcc/testsuite/gcc.target/mips/rsqrt-4.c
index 726c35403dc..6b6577e2e0a 100644
--- a/gcc/testsuite/gcc.target/mips/rsqrt-4.c
+++ b/gcc/testsuite/gcc.target/mips/rsqrt-4.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ffast-math -mips64 -mhard-float -mgp32" } */
+/* { dg-options "-ffast-math -mips64 -mhard-float -mgp32" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\trsqrt.d\t" } } */
/* { dg-final { scan-assembler-times "\trsqrt.s\t" 2 } } */
diff --git a/gcc/testsuite/gcc.target/mips/save-restore-1.c b/gcc/testsuite/gcc.target/mips/save-restore-1.c
index f6a854ee9f3..b3ce1b18dc2 100644
--- a/gcc/testsuite/gcc.target/mips/save-restore-1.c
+++ b/gcc/testsuite/gcc.target/mips/save-restore-1.c
@@ -1,5 +1,5 @@
/* Check that we can use the save instruction to save varargs. */
-/* { dg-options "(-mips16) isa_rev>=1 -mabi=32 -O2" } */
+/* { dg-options "(-mips16) isa_rev>=1 -mabi=32" } */
#include <stdarg.h>
diff --git a/gcc/testsuite/gcc.target/mips/save-restore-2.c b/gcc/testsuite/gcc.target/mips/save-restore-2.c
index 4a11bc21083..899460fe7b6 100644
--- a/gcc/testsuite/gcc.target/mips/save-restore-2.c
+++ b/gcc/testsuite/gcc.target/mips/save-restore-2.c
@@ -1,5 +1,6 @@
/* Check that we can use the save instruction to save spilled arguments. */
-/* { dg-options "(-mips16) isa_rev>=1 -mabi=32 -O2" } */
+/* { dg-options "(-mips16) isa_rev>=1 -mabi=32" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
MIPS16 void
foo (int *a, int b, int c)
diff --git a/gcc/testsuite/gcc.target/mips/save-restore-3.c b/gcc/testsuite/gcc.target/mips/save-restore-3.c
index d45fe50ea6b..5d7aeb0edd9 100644
--- a/gcc/testsuite/gcc.target/mips/save-restore-3.c
+++ b/gcc/testsuite/gcc.target/mips/save-restore-3.c
@@ -1,6 +1,6 @@
/* Check that we can use the save instruction to save spilled arguments
when the argument save area is out of range of a direct load or store. */
-/* { dg-options "(-mips16) isa_rev>=1 -mabi=32 -O2" } */
+/* { dg-options "(-mips16) isa_rev>=1 -mabi=32" } */
void bar (int *);
diff --git a/gcc/testsuite/gcc.target/mips/save-restore-4.c b/gcc/testsuite/gcc.target/mips/save-restore-4.c
index ef7722bce09..25f3e6199d2 100644
--- a/gcc/testsuite/gcc.target/mips/save-restore-4.c
+++ b/gcc/testsuite/gcc.target/mips/save-restore-4.c
@@ -1,5 +1,6 @@
/* Check that we can use the save instruction to save $16, $17 and $31. */
-/* { dg-options "(-mips16) isa_rev>=1 -mabi=32 -O2" } */
+/* { dg-options "(-mips16) isa_rev>=1 -mabi=32" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
void bar (void);
diff --git a/gcc/testsuite/gcc.target/mips/save-restore-5.c b/gcc/testsuite/gcc.target/mips/save-restore-5.c
index 0dd823a6813..b0dc1f057e9 100644
--- a/gcc/testsuite/gcc.target/mips/save-restore-5.c
+++ b/gcc/testsuite/gcc.target/mips/save-restore-5.c
@@ -1,5 +1,5 @@
/* Check that we don't try to save the same register twice. */
-/* { dg-options "(-mips16) isa_rev>=1 -mgp32 -O2" } */
+/* { dg-options "(-mips16) isa_rev>=1 -mgp32" } */
int bar (int, int, int, int);
void frob (void);
diff --git a/gcc/testsuite/gcc.target/mips/sb1-1.c b/gcc/testsuite/gcc.target/mips/sb1-1.c
index 819938fcdc0..c3fb22a8570 100644
--- a/gcc/testsuite/gcc.target/mips/sb1-1.c
+++ b/gcc/testsuite/gcc.target/mips/sb1-1.c
@@ -1,10 +1,11 @@
/* Test SB-1 v2sf extensions. */
/* { dg-do compile } */
-/* { dg-options "-march=sb1 -O2 -mpaired-single -mgp64 -ffast-math" } */
+/* { dg-options "-march=sb1 -mpaired-single -mgp64 -ffast-math" } */
+/* { dg-skip-if "rsqrt code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "div.ps" } } */
/* { dg-final { scan-assembler "recip.ps" } } */
/* { dg-final { scan-assembler "sqrt.ps" } } */
-/* { dg-final { scan-assembler "rsqrt.ps" } } */
+/* { dg-final { scan-assembler "rsqrt.ps" } } */
typedef float v2sf __attribute__ ((vector_size (8)));
diff --git a/gcc/testsuite/gcc.target/mips/scc-1.c b/gcc/testsuite/gcc.target/mips/scc-1.c
index d0dc040151c..17599a83756 100644
--- a/gcc/testsuite/gcc.target/mips/scc-1.c
+++ b/gcc/testsuite/gcc.target/mips/scc-1.c
@@ -1,4 +1,5 @@
-/* { dg-options "(-mips16) -O isa_rev>=1" } */
+/* { dg-options "(-mips16) isa_rev>=1" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times {slt \$2,\$5,\$4} 1 } } */
/* { dg-final { scan-assembler-times {sltu \$2,\$5,\$4} 1 } } */
diff --git a/gcc/testsuite/gcc.target/mips/scc-2.c b/gcc/testsuite/gcc.target/mips/scc-2.c
index 440c28b84bf..132da7bcf65 100644
--- a/gcc/testsuite/gcc.target/mips/scc-2.c
+++ b/gcc/testsuite/gcc.target/mips/scc-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -mgp64" } */
+/* { dg-options "-mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "and\t\|andi\t\|ext\t\|sll\t\|srl\t" } } */
/* { dg-final { scan-assembler-times "slt\t\|slti?u\t" 12 } } */
diff --git a/gcc/testsuite/gcc.target/mips/scc-3.c b/gcc/testsuite/gcc.target/mips/scc-3.c
index b295e782c2d..a07a85adad7 100644
--- a/gcc/testsuite/gcc.target/mips/scc-3.c
+++ b/gcc/testsuite/gcc.target/mips/scc-3.c
@@ -1,4 +1,5 @@
-/* { dg-options "(-mips16) -O -mabi=o64" } */
+/* { dg-options "(-mips16) -mabi=o64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "and\t\|andi\t\|ext\t\|sll\t\|srl\t" } } */
/* { dg-final { scan-assembler-times "slt\t\|slti?u\t" 8 } } */
diff --git a/gcc/testsuite/gcc.target/mips/scc-4.c b/gcc/testsuite/gcc.target/mips/scc-4.c
index 40460666c7f..05ba6671940 100644
--- a/gcc/testsuite/gcc.target/mips/scc-4.c
+++ b/gcc/testsuite/gcc.target/mips/scc-4.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -mabi=o64" } */
+/* { dg-options "-mabi=o64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "slt\t" } } */
/* { dg-final { scan-assembler "sltu\t\|xor\t\|xori\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/sdata-1.c b/gcc/testsuite/gcc.target/mips/sdata-1.c
index f9a25cdc9f7..646a449947e 100644
--- a/gcc/testsuite/gcc.target/mips/sdata-1.c
+++ b/gcc/testsuite/gcc.target/mips/sdata-1.c
@@ -20,9 +20,9 @@
/* { dg-final { scan-assembler-not "%gp_?rel\\(g8b\\)" } } */
/* { dg-final { scan-assembler "%gp_?rel\\(g8c\\)" } } */
-static int l4a;
-static int l4b = 1;
-static int __attribute__((section(".sdata"))) l4c;
+static volatile int l4a;
+static volatile int l4b = 1;
+static volatile int __attribute__((section(".sdata"))) l4c;
extern int e4a;
extern int __attribute__((section(".sdata"))) e4b;
int __attribute__((common)) c4;
@@ -30,9 +30,9 @@ int __attribute__((nocommon)) g4a;
int g4b = 1;
int __attribute__((section(".sdata"))) g4c = 2;
-static int l8a[2];
-static int l8b[2] = { 1, 2 };
-static int __attribute__((section(".sdata"))) l8c[2];
+static volatile int l8a[2];
+static volatile int l8b[2] = { 1, 2 };
+static volatile int __attribute__((section(".sdata"))) l8c[2];
extern int e8a[2];
extern int __attribute__((section(".sdata"))) e8b[2];
int __attribute__((common)) c8[2];
diff --git a/gcc/testsuite/gcc.target/mips/sdata-2.c b/gcc/testsuite/gcc.target/mips/sdata-2.c
index 5a9fff2da1d..fe55120f649 100644
--- a/gcc/testsuite/gcc.target/mips/sdata-2.c
+++ b/gcc/testsuite/gcc.target/mips/sdata-2.c
@@ -20,9 +20,9 @@
/* { dg-final { scan-assembler-not "%gp_?rel\\(g8b\\)" } } */
/* { dg-final { scan-assembler "%gp_?rel\\(g8c\\)" } } */
-static int l4a;
-static int l4b = 1;
-static int __attribute__((section(".sdata"))) l4c;
+static volatile int l4a;
+static volatile int l4b = 1;
+static volatile int __attribute__((section(".sdata"))) l4c;
extern int e4a;
extern int __attribute__((section(".sdata"))) e4b;
int __attribute__((common)) c4;
@@ -30,9 +30,9 @@ int __attribute__((nocommon)) g4a;
int g4b = 1;
int __attribute__((section(".sdata"))) g4c = 2;
-static int l8a[2];
-static int l8b[2] = { 1, 2 };
-static int __attribute__((section(".sdata"))) l8c[2];
+static volatile int l8a[2];
+static volatile int l8b[2] = { 1, 2 };
+static volatile int __attribute__((section(".sdata"))) l8c[2];
extern int e8a[2];
extern int __attribute__((section(".sdata"))) e8b[2];
int __attribute__((common)) c8[2];
diff --git a/gcc/testsuite/gcc.target/mips/sdata-3.c b/gcc/testsuite/gcc.target/mips/sdata-3.c
index f232324954f..6705ee35a8e 100644
--- a/gcc/testsuite/gcc.target/mips/sdata-3.c
+++ b/gcc/testsuite/gcc.target/mips/sdata-3.c
@@ -20,9 +20,9 @@
/* { dg-final { scan-assembler-not "%gp_?rel\\(g8b\\)" } } */
/* { dg-final { scan-assembler "%gp_?rel\\(g8c\\)" } } */
-static int l4a;
-static int l4b = 1;
-static int __attribute__((section(".sdata"))) l4c;
+static volatile int l4a;
+static volatile int l4b = 1;
+static volatile int __attribute__((section(".sdata"))) l4c;
extern int e4a;
extern int __attribute__((section(".sdata"))) e4b;
int __attribute__((common)) c4;
@@ -30,9 +30,9 @@ int __attribute__((nocommon)) g4a;
int g4b = 1;
int __attribute__((section(".sdata"))) g4c = 2;
-static int l8a[2];
-static int l8b[2] = { 1, 2 };
-static int __attribute__((section(".sdata"))) l8c[2];
+static volatile int l8a[2];
+static volatile int l8b[2] = { 1, 2 };
+static volatile int __attribute__((section(".sdata"))) l8c[2];
extern int e8a[2];
extern int __attribute__((section(".sdata"))) e8b[2];
int __attribute__((common)) c8[2];
diff --git a/gcc/testsuite/gcc.target/mips/sdata-4.c b/gcc/testsuite/gcc.target/mips/sdata-4.c
index 7786c6db9e4..82cfa61f893 100644
--- a/gcc/testsuite/gcc.target/mips/sdata-4.c
+++ b/gcc/testsuite/gcc.target/mips/sdata-4.c
@@ -3,9 +3,9 @@
/* { dg-final { scan-assembler-not "%gp_?rel" } } */
/* { dg-final { scan-assembler-not "\\\$gp" } } */
-static int l4a;
-static int l4b = 1;
-static int __attribute__((section(".sdata"))) l4c;
+static volatile int l4a;
+static volatile int l4b = 1;
+static volatile int __attribute__((section(".sdata"))) l4c;
extern int e4a;
extern int __attribute__((section(".sdata"))) e4b;
int __attribute__((common)) c4;
@@ -13,9 +13,9 @@ int __attribute__((nocommon)) g4a;
int g4b = 1;
int __attribute__((section(".sdata"))) g4c = 2;
-static int l8a[2];
-static int l8b[2] = { 1, 2 };
-static int __attribute__((section(".sdata"))) l8c[2];
+static volatile int l8a[2];
+static volatile int l8b[2] = { 1, 2 };
+static volatile int __attribute__((section(".sdata"))) l8c[2];
extern int e8a[2];
extern int __attribute__((section(".sdata"))) e8b[2];
int __attribute__((common)) c8[2];
diff --git a/gcc/testsuite/gcc.target/mips/smartmips-lwxs.c b/gcc/testsuite/gcc.target/mips/smartmips-lwxs.c
index 92f46250eb6..ce64b13a77f 100644
--- a/gcc/testsuite/gcc.target/mips/smartmips-lwxs.c
+++ b/gcc/testsuite/gcc.target/mips/smartmips-lwxs.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -msmartmips" } */
+/* { dg-options "-msmartmips" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 int scaled_indexed_word_load (int a[], int b)
{
diff --git a/gcc/testsuite/gcc.target/mips/smartmips-ror-1.c b/gcc/testsuite/gcc.target/mips/smartmips-ror-1.c
index e9735b20a52..6300f8f03fd 100644
--- a/gcc/testsuite/gcc.target/mips/smartmips-ror-1.c
+++ b/gcc/testsuite/gcc.target/mips/smartmips-ror-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -msmartmips" } */
+/* { dg-options "-msmartmips" } */
NOMIPS16 int rotate_left (unsigned a, unsigned s)
{
diff --git a/gcc/testsuite/gcc.target/mips/smartmips-ror-2.c b/gcc/testsuite/gcc.target/mips/smartmips-ror-2.c
index ac4c94df8e2..2d7c5dcd63f 100644
--- a/gcc/testsuite/gcc.target/mips/smartmips-ror-2.c
+++ b/gcc/testsuite/gcc.target/mips/smartmips-ror-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -msmartmips" } */
+/* { dg-options "-msmartmips" } */
NOMIPS16 int rotate_right (unsigned a, unsigned s)
{
diff --git a/gcc/testsuite/gcc.target/mips/smartmips-ror-3.c b/gcc/testsuite/gcc.target/mips/smartmips-ror-3.c
index 360f3c463ff..5e51aa3f018 100644
--- a/gcc/testsuite/gcc.target/mips/smartmips-ror-3.c
+++ b/gcc/testsuite/gcc.target/mips/smartmips-ror-3.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -msmartmips" } */
+/* { dg-options "-msmartmips" } */
#define S 13
diff --git a/gcc/testsuite/gcc.target/mips/smartmips-ror-4.c b/gcc/testsuite/gcc.target/mips/smartmips-ror-4.c
index b8b82944540..fc88a9a8263 100644
--- a/gcc/testsuite/gcc.target/mips/smartmips-ror-4.c
+++ b/gcc/testsuite/gcc.target/mips/smartmips-ror-4.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -msmartmips" } */
+/* { dg-options "-msmartmips" } */
#define S 13
diff --git a/gcc/testsuite/gcc.target/mips/soft-float-1.c b/gcc/testsuite/gcc.target/mips/soft-float-1.c
index 4c456462797..855ff8eadda 100644
--- a/gcc/testsuite/gcc.target/mips/soft-float-1.c
+++ b/gcc/testsuite/gcc.target/mips/soft-float-1.c
@@ -1,7 +1,8 @@
-/* { dg-options "-msoft-float" } */
+/* { dg-options "-msoft-float -ffat-lto-objects" } */
void
foo (void)
{
register float x asm ("$f0"); /* { dg-error "cannot be accessed" } */
+ asm volatile ("" : "=r" (x));
}
diff --git a/gcc/testsuite/gcc.target/mips/stack-1.c b/gcc/testsuite/gcc.target/mips/stack-1.c
index 3d495453dd7..63852154850 100644
--- a/gcc/testsuite/gcc.target/mips/stack-1.c
+++ b/gcc/testsuite/gcc.target/mips/stack-1.c
@@ -1,4 +1,3 @@
-/* { dg-options "-O2" } */
/* { dg-final { scan-assembler "addiu\t(\\\$sp,)?\\\$sp,\[1-9\]" } } */
/* { dg-final { scan-assembler "\tlw\t" } } */
/* { dg-final { scan-assembler-not "addiu\t(\\\$sp,)?\\\$sp,\[1-9\].*\tlw\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/timode-1.c b/gcc/testsuite/gcc.target/mips/timode-1.c
index fc087ee1c35..606fee0cb1a 100644
--- a/gcc/testsuite/gcc.target/mips/timode-1.c
+++ b/gcc/testsuite/gcc.target/mips/timode-1.c
@@ -1,4 +1,5 @@
/* { dg-options "-mgp64" } */
+/* { dg-skip-if "we deliberately use calls when optimizing for size" { *-*-* } { "-Os" } { "" } } */
typedef int int128_t __attribute__((mode(TI)));
typedef unsigned int uint128_t __attribute__((mode(TI)));
@@ -22,44 +23,84 @@ volatile int amount = 4;
volatile uint128_t result;
int
-main (void)
+test1 (void)
{
result = a * b;
if (result != c)
return 1;
+ return 0;
+}
+int
+test2 (void)
+{
result = c + d;
if (result != e)
return 1;
+ return 0;
+}
+int
+test3 (void)
+{
result = e - d;
if (result != c)
return 1;
+ return 0;
+}
+int
+test4 (void)
+{
result = d & e;
if (result != f)
return 1;
+ return 0;
+}
+int
+test5 (void)
+{
result = d ^ e;
if (result != g)
return 1;
+ return 0;
+}
+int
+test6 (void)
+{
result = d | e;
if (result != h)
return 1;
+ return 0;
+}
+int
+test7 (void)
+{
result = g << amount;
if (result != i)
return 1;
+ return 0;
+}
+int
+test8 (void)
+{
result = g >> amount;
if (result != j)
return 1;
+ return 0;
+}
+int
+test9 (void)
+{
result = (int128_t) g >> amount;
if (result != k)
return 1;
-
return 0;
}
+
/* { dg-final { scan-assembler-not "\tjal" } } */
diff --git a/gcc/testsuite/gcc.target/mips/timode-2.c b/gcc/testsuite/gcc.target/mips/timode-2.c
index 9f3e43c41bd..b6b8ea99ba0 100644
--- a/gcc/testsuite/gcc.target/mips/timode-2.c
+++ b/gcc/testsuite/gcc.target/mips/timode-2.c
@@ -23,43 +23,96 @@ volatile int amount = 4;
volatile uint128_t result;
int
-main (void)
+test1 (void)
{
result = a * b;
if (result != c)
return 1;
+ return 0;
+}
+int
+test2 (void)
+{
result = c + d;
if (result != e)
return 1;
+ return 0;
+}
+int
+test3 (void)
+{
result = e - d;
if (result != c)
return 1;
+ return 0;
+}
+int
+test4 (void)
+{
result = d & e;
if (result != f)
return 1;
+ return 0;
+}
+int
+test5 (void)
+{
result = d ^ e;
if (result != g)
return 1;
+ return 0;
+}
+int
+test6 (void)
+{
result = d | e;
if (result != h)
return 1;
+ return 0;
+}
+int
+test7 (void)
+{
result = g << amount;
if (result != i)
return 1;
+ return 0;
+}
+int
+test8 (void)
+{
result = g >> amount;
if (result != j)
return 1;
+ return 0;
+}
+int
+test9 (void)
+{
result = (int128_t) g >> amount;
if (result != k)
return 1;
-
return 0;
}
+
+int
+main (void)
+{
+ return (test1 ()
+ | test2 ()
+ | test3 ()
+ | test4 ()
+ | test5 ()
+ | test6 ()
+ | test7 ()
+ | test8 ()
+ | test9 ());
+}
diff --git a/gcc/testsuite/gcc.target/mips/truncate-1.c b/gcc/testsuite/gcc.target/mips/truncate-1.c
index 7e54aae3eba..d12ebd31116 100644
--- a/gcc/testsuite/gcc.target/mips/truncate-1.c
+++ b/gcc/testsuite/gcc.target/mips/truncate-1.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64" } */
+/* { dg-options "-mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
#define TEST(ID, TYPE, SHIFT) \
int __attribute__((nomips16)) \
diff --git a/gcc/testsuite/gcc.target/mips/truncate-2.c b/gcc/testsuite/gcc.target/mips/truncate-2.c
index 423dc26f4da..06ab58f5a3a 100644
--- a/gcc/testsuite/gcc.target/mips/truncate-2.c
+++ b/gcc/testsuite/gcc.target/mips/truncate-2.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O -mgp64" } */
+/* { dg-options "-mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
#define TEST(ID, TYPE, SHIFT) \
int NOMIPS16 \
diff --git a/gcc/testsuite/gcc.target/mips/truncate-3.c b/gcc/testsuite/gcc.target/mips/truncate-3.c
index 90f2c772f83..fcb69e4b44f 100644
--- a/gcc/testsuite/gcc.target/mips/truncate-3.c
+++ b/gcc/testsuite/gcc.target/mips/truncate-3.c
@@ -1,5 +1,6 @@
/* Remove redundant operations in truncate's operand. */
-/* { dg-options "-O -mgp64" } */
+/* { dg-options "-mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tandi?\t" } } */
f (long long d)
diff --git a/gcc/testsuite/gcc.target/mips/truncate-4.c b/gcc/testsuite/gcc.target/mips/truncate-4.c
index 4c783681ab2..cda90e00cd7 100644
--- a/gcc/testsuite/gcc.target/mips/truncate-4.c
+++ b/gcc/testsuite/gcc.target/mips/truncate-4.c
@@ -1,5 +1,6 @@
/* The and is performed in DI mode so there is no need for truncation. */
-/* { dg-options "-O -mgp64" } */
+/* { dg-options "-mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tsll\t" } } */
NOMIPS16 unsigned long long
diff --git a/gcc/testsuite/gcc.target/mips/truncate-5.c b/gcc/testsuite/gcc.target/mips/truncate-5.c
index 6cdb7f71e7f..f2a1875e959 100644
--- a/gcc/testsuite/gcc.target/mips/truncate-5.c
+++ b/gcc/testsuite/gcc.target/mips/truncate-5.c
@@ -1,6 +1,7 @@
/* If we AND in DI mode (i.e. replace the order of TRUNCATE and AND) then we
can remove the TRUNCATE. */
-/* { dg-options "-O -mgp64" } */
+/* { dg-options "-mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tsll\t\[^\n\]*,0" } } */
struct s
diff --git a/gcc/testsuite/gcc.target/mips/truncate-6.c b/gcc/testsuite/gcc.target/mips/truncate-6.c
index 1ccd6c59c3d..178d4baa4cd 100644
--- a/gcc/testsuite/gcc.target/mips/truncate-6.c
+++ b/gcc/testsuite/gcc.target/mips/truncate-6.c
@@ -1,7 +1,8 @@
/* setup_incoming_promotions should detect x to be already sign-extended due
to PROMOTE_MODE. Thus the truncation should be removed by combine. Based
on gcc.c-torture/execute/pr34070-2.c. */
-/* { dg-options "-O -mgp64" } */
+/* { dg-options "-mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "\tsll\t\[^\n\]*,0" } } */
NOMIPS16 int f(unsigned int x, int n, int *p)
diff --git a/gcc/testsuite/gcc.target/mips/unaligned-1.c b/gcc/testsuite/gcc.target/mips/unaligned-1.c
index 23b6c8c7434..34565fd4c62 100644
--- a/gcc/testsuite/gcc.target/mips/unaligned-1.c
+++ b/gcc/testsuite/gcc.target/mips/unaligned-1.c
@@ -1,4 +1,5 @@
-/* { dg-options "-O2 -mgp64" } */
+/* { dg-options "-mgp64" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "sdl\t" 1 } } */
/* { dg-final { scan-assembler-times "sdr\t" 1 } } */
/* { dg-final { scan-assembler-times "ldl\t" 1 } } */
diff --git a/gcc/testsuite/gcc.target/mips/vr-mult-1.c b/gcc/testsuite/gcc.target/mips/vr-mult-1.c
index 2ed4f2f9b06..db9ae3430ae 100644
--- a/gcc/testsuite/gcc.target/mips/vr-mult-1.c
+++ b/gcc/testsuite/gcc.target/mips/vr-mult-1.c
@@ -1,7 +1,8 @@
/* Make sure that mul/addu is preferred over mtlo/macc and that mul/subu
is preferred over mtlo/msac. */
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr5400" } */
+/* { dg-options "-march=vr5400 -fpeephole2" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 int f1 (int a, int b, int c) { return a + b * c; }
NOMIPS16 int f2 (int a, int b, int c) { return a - b * c; }
/* { dg-final { scan-assembler "\tmul\t.*\tmul\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/vr-mult-2.c b/gcc/testsuite/gcc.target/mips/vr-mult-2.c
index 7e8be5e4283..58bdc089339 100644
--- a/gcc/testsuite/gcc.target/mips/vr-mult-2.c
+++ b/gcc/testsuite/gcc.target/mips/vr-mult-2.c
@@ -1,7 +1,8 @@
/* Make sure that mul/addu is preferred over mtlo/macc and that mul/subu
is preferred over mtlo/msac. */
/* { dg-do compile } */
-/* { dg-options "-O2 -march=vr5500" } */
+/* { dg-options "-march=vr5500 -fpeephole2" } */
+/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 int f1 (int a, int b, int c) { return a + b * c; }
NOMIPS16 int f2 (int a, int b, int c) { return a - b * c; }
/* { dg-final { scan-assembler "\tmul\t.*\tmul\t" } } */