Ensure softfloat and singlefloat take precedence in consistency checks
authorMatthew Fortune <matthew.fortune@imgtec.com>
Mon, 15 Sep 2014 09:32:38 +0000 (10:32 +0100)
committerMatthew Fortune <matthew.fortune@imgtec.com>
Mon, 15 Sep 2014 10:51:07 +0000 (11:51 +0100)
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.

12 files changed:
gas/ChangeLog
gas/config/tc-mips.c
gas/testsuite/ChangeLog
gas/testsuite/gas/mips/attr-gnu-4-5-msingle-float.l [new file with mode: 0644]
gas/testsuite/gas/mips/attr-gnu-4-5-msingle-float.s [new file with mode: 0644]
gas/testsuite/gas/mips/attr-gnu-4-5-msoft-float.l [new file with mode: 0644]
gas/testsuite/gas/mips/attr-gnu-4-5-msoft-float.s [new file with mode: 0644]
gas/testsuite/gas/mips/attr-gnu-4-6-msingle-float.l
gas/testsuite/gas/mips/attr-gnu-4-6-msoft-float.l
gas/testsuite/gas/mips/attr-gnu-4-7-msingle-float.l
gas/testsuite/gas/mips/attr-gnu-4-7-msoft-float.l
gas/testsuite/gas/mips/mips.exp

index 788e80b..84c90c8 100644 (file)
@@ -1,3 +1,8 @@
+2014-09-15  Matthew Fortune  <matthew.fortune@imgtec.com>
+
+       * tc-mips.c (check_fpabi): Move softfloat and singlefloat
+       checks higher.
+
 2014-09-12  Jose E. Marchesi  <jose.marchesi@oracle.com>
 
        * config/tc-sparc.c (sparc_ip): Update the set of allowed hwcaps
index 59d8635..2dabdf4 100644 (file)
@@ -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.  */
index 2981cef..97d6d83 100644 (file)
@@ -1,3 +1,15 @@
+2014-09-15  Matthew Fortune  <matthew.fortune@imgtec.com>
+
+       * 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  <andrew.bennett@imgtec.com>
 
        * 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 (file)
index 0000000..be2017d
--- /dev/null
@@ -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 (file)
index 0000000..b21ec3b
--- /dev/null
@@ -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 (file)
index 0000000..3385c5f
--- /dev/null
@@ -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 (file)
index 0000000..b21ec3b
--- /dev/null
@@ -0,0 +1 @@
+.gnu_attribute 4,5
index 999b5e2..ab12f1d 100644 (file)
@@ -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'
index 999b5e2..3bf1946 100644 (file)
@@ -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'
index 999b5e2..ab12f1d 100644 (file)
@@ -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'
index 999b5e2..3bf1946 100644 (file)
@@ -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'
index 198d60e..4cf6e7d 100644 (file)
@@ -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]