On Thu, Nov 15, 2012 at 1:35 AM, Uros Bizjak <[email protected]> wrote:
> Attached patch fixes following testsuite failure
>
> FAIL: g++.dg/cpp0x/gnu_fext-numeric-literals.C (test for excess errors)
> FAIL: g++.dg/cpp0x/std_fext-numeric-literals.C (test for excess errors)
>
> on targets that don't support Q and W floating suffixes.
This revision auto-detect support for Q and W suffixes.
2012-11-15 Uros Bizjak <[email protected]>
* lib/target_suports.exp
(check_effective_target_has_w_floating_suffix): New procedure.
(check_effective_target_has_q_floating_suffix): Ditto.
* g++.dg/cpp0x/gnu_fext-numeric-literals.C: Add dg-error directive
for unsupported non-standard suffix on floating constant.
* g++.dg/cpp0x/std_fext-numeric-literals.C: Ditto.
Tested on alphaev68-pc-linux-gnu and x86_64-pc-linux-gnu.
OK for mainline?
Uros.
Index: lib/target-supports.exp
===================================================================
--- lib/target-supports.exp (revision 193533)
+++ lib/target-supports.exp (working copy)
@@ -1742,6 +1742,23 @@
}]
}
+# Return 1 if the target supports 'w' suffix on floating constant
+# 0 otherwise.
+
+proc check_effective_target_has_w_floating_suffix { } {
+ return [check_no_compiler_messages w_fp_suffix object {
+ float dummy = 1.0w;
+ }]
+}
+
+# Return 1 if the target supports 'q' suffix on floating constant
+# 0 otherwise.
+
+proc check_effective_target_has_q_floating_suffix { } {
+ return [check_no_compiler_messages q_fp_suffix object {
+ float dummy = 1.0q;
+ }]
+}
# Return 1 if the target supports compiling fixed-point,
# 0 otherwise.
Index: g++.dg/cpp0x/gnu_fext-numeric-literals.C
===================================================================
--- g++.dg/cpp0x/gnu_fext-numeric-literals.C (revision 193533)
+++ g++.dg/cpp0x/gnu_fext-numeric-literals.C (working copy)
@@ -91,10 +91,10 @@
auto rfp = 1.0r; // { dg-error "fixed-point types not supported" }
auto Rfp = 1.0R; // { dg-error "fixed-point types not supported" }
- auto wfp = 1.0w;
- auto Wfp = 1.0W;
- auto qfp = 1.0q;
- auto Qfp = 1.0Q;
+ auto wfp = 1.0w; // { dg-error "unsupported" "" { target { !
has_w_floating_suffix } } }
+ auto Wfp = 1.0W; // { dg-error "unsupported" "" { target { !
has_w_floating_suffix } } }
+ auto qfp = 1.0q; // { dg-error "unsupported" "" { target { !
has_q_floating_suffix } } }
+ auto Qfp = 1.0Q; // { dg-error "unsupported" "" { target { !
has_q_floating_suffix } } }
}
// { dg-warning "literal operator suffixes not preceded by" "" { target *-*-*
} 7 }
Index: g++.dg/cpp0x/std_fext-numeric-literals.C
===================================================================
--- g++.dg/cpp0x/std_fext-numeric-literals.C (revision 193533)
+++ g++.dg/cpp0x/std_fext-numeric-literals.C (working copy)
@@ -91,10 +91,10 @@
auto rfp = 1.0r; // { dg-error "fixed-point types not supported" }
auto Rfp = 1.0R; // { dg-error "fixed-point types not supported" }
- auto wfp = 1.0w;
- auto Wfp = 1.0W;
- auto qfp = 1.0q;
- auto Qfp = 1.0Q;
+ auto wfp = 1.0w; // { dg-error "unsupported" "" { target { !
has_w_floating_suffix } } }
+ auto Wfp = 1.0W; // { dg-error "unsupported" "" { target { !
has_w_floating_suffix } } }
+ auto qfp = 1.0q; // { dg-error "unsupported" "" { target { !
has_q_floating_suffix } } }
+ auto Qfp = 1.0Q; // { dg-error "unsupported" "" { target { !
has_q_floating_suffix } } }
}
// { dg-warning "literal operator suffixes not preceded by" "" { target *-*-*
} 7 }