On Thu, Nov 15, 2012 at 7:44 PM, Uros Bizjak <ubiz...@gmail.com> wrote:
>>> >> No, the intention of this test is to check if target can handle these >>> >> suffixes through TARGET_C_MODE_FOR_SUFFIX. Please note that in >>> >> particular tests, -std=x compile switches are added to compile flags. >>> > >>> > But -std=c++11 (well, perhaps -std=gnu++11) could be eventually the >>> > default. >>> > As Q/W suffixes are only supported in certain modes through >>> > TARGET_C_MODE_FOR_SUFFIX, it is better to put the explicit option that >>> > allows it on the command line of the check_effective_target* test. >>> >>> Do you have option in mind that would be appropriate for the test? >> >> "-std=gnu++03" ? > > Adding "-w" to skip a warning that this option applies only to c++ did > the trick. 2012-11-16 Uros Bizjak <ubiz...@gmail.com> * 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. Attached patch was re-tested on alphaev68-linux-gnu and x86_64-linux-gnu and committed to mainline SVN. 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; + } "-std=gnu++03 -w"] +} + +# 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; + } "-std=gnu++03 -w"] +} # 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 }