From ea79f94a7ab96c6114b80bf78830f877325b10ff Mon Sep 17 00:00:00 2001 From: Matthew Fortune Date: Mon, 15 Sep 2014 10:32:38 +0100 Subject: [PATCH] Ensure softfloat and singlefloat take precedence in consistency checks gas/ * tc-mips.c (check_fpabi): Move softfloat and singlefloat checks higher. gas/testsuite/ * gas/mips/attr-gnu-4-5-msingle-float.l: New file. * gas/mips/attr-gnu-4-5-msingle-float.s: Likewise. * gas/mips/attr-gnu-4-5-msoft-float.l: Likewise. * gas/mips/attr-gnu-4-5-msoft-float.s: Likewise. * gas/mips/attr-gnu-4-6-msingle-float.l: Update expected output. * gas/mips/attr-gnu-4-6-msoft-float.l: Likewise. * gas/mips/attr-gnu-4-7-msingle-float.l: Likewise. * gas/mips/attr-gnu-4-7-msoft-float.l: Likewise. * gas/mips/mips.exp: Update expected output for FP ABI 5,6,7. --- gas/ChangeLog | 5 ++++ gas/config/tc-mips.c | 24 +++++++++---------- gas/testsuite/ChangeLog | 12 ++++++++++ .../gas/mips/attr-gnu-4-5-msingle-float.l | 2 ++ .../gas/mips/attr-gnu-4-5-msingle-float.s | 1 + .../gas/mips/attr-gnu-4-5-msoft-float.l | 2 ++ .../gas/mips/attr-gnu-4-5-msoft-float.s | 1 + .../gas/mips/attr-gnu-4-6-msingle-float.l | 2 +- .../gas/mips/attr-gnu-4-6-msoft-float.l | 2 +- .../gas/mips/attr-gnu-4-7-msingle-float.l | 2 +- .../gas/mips/attr-gnu-4-7-msoft-float.l | 2 +- gas/testsuite/gas/mips/mips.exp | 12 +++++----- 12 files changed, 45 insertions(+), 22 deletions(-) create mode 100644 gas/testsuite/gas/mips/attr-gnu-4-5-msingle-float.l create mode 100644 gas/testsuite/gas/mips/attr-gnu-4-5-msingle-float.s create mode 100644 gas/testsuite/gas/mips/attr-gnu-4-5-msoft-float.l create mode 100644 gas/testsuite/gas/mips/attr-gnu-4-5-msoft-float.s diff --git a/gas/ChangeLog b/gas/ChangeLog index 788e80b113b..84c90c8a9b0 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2014-09-15 Matthew Fortune + + * tc-mips.c (check_fpabi): Move softfloat and singlefloat + checks higher. + 2014-09-12 Jose E. Marchesi * config/tc-sparc.c (sparc_ip): Update the set of allowed hwcaps diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 59d863540f2..2dabdf449b1 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -3672,39 +3672,44 @@ fpabi_requires (int fpabi, const char *what) static void check_fpabi (int fpabi) { - bfd_boolean needs_check = FALSE; switch (fpabi) { case Val_GNU_MIPS_ABI_FP_DOUBLE: + if (file_mips_opts.soft_float) + fpabi_incompatible_with (fpabi, "softfloat"); + else if (file_mips_opts.single_float) + fpabi_incompatible_with (fpabi, "singlefloat"); if (file_mips_opts.gp == 64 && file_mips_opts.fp == 32) fpabi_incompatible_with (fpabi, "gp=64 fp=32"); else if (file_mips_opts.gp == 32 && file_mips_opts.fp == 64) fpabi_incompatible_with (fpabi, "gp=32 fp=64"); - else - needs_check = TRUE; break; case Val_GNU_MIPS_ABI_FP_XX: if (mips_abi != O32_ABI) fpabi_requires (fpabi, "-mabi=32"); + else if (file_mips_opts.soft_float) + fpabi_incompatible_with (fpabi, "softfloat"); + else if (file_mips_opts.single_float) + fpabi_incompatible_with (fpabi, "singlefloat"); else if (file_mips_opts.fp != 0) fpabi_requires (fpabi, "fp=xx"); - else - needs_check = TRUE; break; case Val_GNU_MIPS_ABI_FP_64A: case Val_GNU_MIPS_ABI_FP_64: if (mips_abi != O32_ABI) fpabi_requires (fpabi, "-mabi=32"); + else if (file_mips_opts.soft_float) + fpabi_incompatible_with (fpabi, "softfloat"); + else if (file_mips_opts.single_float) + fpabi_incompatible_with (fpabi, "singlefloat"); else if (file_mips_opts.fp != 64) fpabi_requires (fpabi, "fp=64"); else if (fpabi == Val_GNU_MIPS_ABI_FP_64 && !file_mips_opts.oddspreg) fpabi_incompatible_with (fpabi, "nooddspreg"); else if (fpabi == Val_GNU_MIPS_ABI_FP_64A && file_mips_opts.oddspreg) fpabi_requires (fpabi, "nooddspreg"); - else - needs_check = TRUE; break; case Val_GNU_MIPS_ABI_FP_SINGLE: @@ -3729,11 +3734,6 @@ check_fpabi (int fpabi) " floating-point ABI"), Tag_GNU_MIPS_ABI_FP, fpabi); break; } - - if (needs_check && file_mips_opts.soft_float) - fpabi_incompatible_with (fpabi, "softfloat"); - else if (needs_check && file_mips_opts.single_float) - fpabi_incompatible_with (fpabi, "singlefloat"); } /* Perform consistency checks on the current options. */ diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 2981cef24f7..97d6d8322d3 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,15 @@ +2014-09-15 Matthew Fortune + + * gas/mips/attr-gnu-4-5-msingle-float.l: New file. + * gas/mips/attr-gnu-4-5-msingle-float.s: Likewise. + * gas/mips/attr-gnu-4-5-msoft-float.l: Likewise. + * gas/mips/attr-gnu-4-5-msoft-float.s: Likewise. + * gas/mips/attr-gnu-4-6-msingle-float.l: Update expected output. + * gas/mips/attr-gnu-4-6-msoft-float.l: Likewise. + * gas/mips/attr-gnu-4-7-msingle-float.l: Likewise. + * gas/mips/attr-gnu-4-7-msoft-float.l: Likewise. + * gas/mips/mips.exp: Update expected output for FP ABI 5,6,7. + 2014-09-12 Andrew Bennett * gas/mips/mips.exp: Add mips*-img-elf* target triple. diff --git a/gas/testsuite/gas/mips/attr-gnu-4-5-msingle-float.l b/gas/testsuite/gas/mips/attr-gnu-4-5-msingle-float.l new file mode 100644 index 00000000000..be2017d046c --- /dev/null +++ b/gas/testsuite/gas/mips/attr-gnu-4-5-msingle-float.l @@ -0,0 +1,2 @@ +.*: Assembler messages: +.*: Warning: .gnu_attribute 4,5 is incompatible with `singlefloat' diff --git a/gas/testsuite/gas/mips/attr-gnu-4-5-msingle-float.s b/gas/testsuite/gas/mips/attr-gnu-4-5-msingle-float.s new file mode 100644 index 00000000000..b21ec3bab9f --- /dev/null +++ b/gas/testsuite/gas/mips/attr-gnu-4-5-msingle-float.s @@ -0,0 +1 @@ +.gnu_attribute 4,5 diff --git a/gas/testsuite/gas/mips/attr-gnu-4-5-msoft-float.l b/gas/testsuite/gas/mips/attr-gnu-4-5-msoft-float.l new file mode 100644 index 00000000000..3385c5f987d --- /dev/null +++ b/gas/testsuite/gas/mips/attr-gnu-4-5-msoft-float.l @@ -0,0 +1,2 @@ +.*: Assembler messages: +.*: Warning: .gnu_attribute 4,5 is incompatible with `softfloat' diff --git a/gas/testsuite/gas/mips/attr-gnu-4-5-msoft-float.s b/gas/testsuite/gas/mips/attr-gnu-4-5-msoft-float.s new file mode 100644 index 00000000000..b21ec3bab9f --- /dev/null +++ b/gas/testsuite/gas/mips/attr-gnu-4-5-msoft-float.s @@ -0,0 +1 @@ +.gnu_attribute 4,5 diff --git a/gas/testsuite/gas/mips/attr-gnu-4-6-msingle-float.l b/gas/testsuite/gas/mips/attr-gnu-4-6-msingle-float.l index 999b5e24759..ab12f1dcbe0 100644 --- a/gas/testsuite/gas/mips/attr-gnu-4-6-msingle-float.l +++ b/gas/testsuite/gas/mips/attr-gnu-4-6-msingle-float.l @@ -1,2 +1,2 @@ .*: Assembler messages: -.*: Warning: .gnu_attribute 4,6 is incompatible with `fp=32' +.*: Warning: .gnu_attribute 4,6 is incompatible with `singlefloat' diff --git a/gas/testsuite/gas/mips/attr-gnu-4-6-msoft-float.l b/gas/testsuite/gas/mips/attr-gnu-4-6-msoft-float.l index 999b5e24759..3bf1946d82d 100644 --- a/gas/testsuite/gas/mips/attr-gnu-4-6-msoft-float.l +++ b/gas/testsuite/gas/mips/attr-gnu-4-6-msoft-float.l @@ -1,2 +1,2 @@ .*: Assembler messages: -.*: Warning: .gnu_attribute 4,6 is incompatible with `fp=32' +.*: Warning: .gnu_attribute 4,6 is incompatible with `softfloat' diff --git a/gas/testsuite/gas/mips/attr-gnu-4-7-msingle-float.l b/gas/testsuite/gas/mips/attr-gnu-4-7-msingle-float.l index 999b5e24759..ab12f1dcbe0 100644 --- a/gas/testsuite/gas/mips/attr-gnu-4-7-msingle-float.l +++ b/gas/testsuite/gas/mips/attr-gnu-4-7-msingle-float.l @@ -1,2 +1,2 @@ .*: Assembler messages: -.*: Warning: .gnu_attribute 4,6 is incompatible with `fp=32' +.*: Warning: .gnu_attribute 4,6 is incompatible with `singlefloat' diff --git a/gas/testsuite/gas/mips/attr-gnu-4-7-msoft-float.l b/gas/testsuite/gas/mips/attr-gnu-4-7-msoft-float.l index 999b5e24759..3bf1946d82d 100644 --- a/gas/testsuite/gas/mips/attr-gnu-4-7-msoft-float.l +++ b/gas/testsuite/gas/mips/attr-gnu-4-7-msoft-float.l @@ -1,2 +1,2 @@ .*: Assembler messages: -.*: Warning: .gnu_attribute 4,6 is incompatible with `fp=32' +.*: Warning: .gnu_attribute 4,6 is incompatible with `softfloat' diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index 198d60ecb03..4cf6e7db8b2 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -1327,9 +1327,9 @@ if { [istarget mips*-*-vxworks*] } { [mips_arch_list_matching mips32r2] run_list_test_arches "attr-gnu-4-5-64" "-64 -mfp64" \ [mips_arch_list_matching mips3] - run_list_test_arches "attr-gnu-4-5" "-32 -msingle-float" \ + run_list_test_arches "attr-gnu-4-5-msingle-float" "-32 -msingle-float" \ [mips_arch_list_matching mips1] - run_list_test_arches "attr-gnu-4-5" "-32 -msoft-float" \ + run_list_test_arches "attr-gnu-4-5-msoft-float" "-32 -msoft-float" \ [mips_arch_list_matching mips1] run_dump_test_arches "attr-gnu-4-5" \ [mips_arch_list_matching mips2 !r5900] @@ -1340,9 +1340,9 @@ if { [istarget mips*-*-vxworks*] } { [mips_arch_list_matching mips32r2] run_list_test_arches "attr-gnu-4-6-64" "-64 -mfp64" \ [mips_arch_list_matching mips3] - run_list_test_arches "attr-gnu-4-6" "-32 -msingle-float" \ + run_list_test_arches "attr-gnu-4-6-msingle-float" "-32 -msingle-float" \ [mips_arch_list_matching mips1] - run_list_test_arches "attr-gnu-4-6" "-32 -msoft-float" \ + run_list_test_arches "attr-gnu-4-6-msoft-float" "-32 -msoft-float" \ [mips_arch_list_matching mips1] run_list_test_arches "attr-gnu-4-6" "-32 -mfpxx" \ [mips_arch_list_matching mips2 !r5900] @@ -1355,9 +1355,9 @@ if { [istarget mips*-*-vxworks*] } { [mips_arch_list_matching mips32r2] run_list_test_arches "attr-gnu-4-7-64" "-64 -mfp64" \ [mips_arch_list_matching mips3] - run_list_test_arches "attr-gnu-4-7" "-32 -msingle-float" \ + run_list_test_arches "attr-gnu-4-7-msingle-float" "-32 -msingle-float" \ [mips_arch_list_matching mips1] - run_list_test_arches "attr-gnu-4-7" "-32 -msoft-float" \ + run_list_test_arches "attr-gnu-4-7-msoft-float" "-32 -msoft-float" \ [mips_arch_list_matching mips1] run_list_test_arches "attr-gnu-4-7" "-32 -mfpxx" \ [mips_arch_list_matching mips2 !r5900] -- 2.30.2