|
|
Created:
14 years, 1 month ago by Diego Novillo Modified:
14 years, 1 month ago Reviewers:
paolo.carlini, pcarlini CC:
libstdc++_gcc.gnu.org Base URL:
svn+ssh://gcc.gnu.org/svn/gcc/branches/google/gcc-4_6/libstdc++-v3/testsuite/decimal/ Visibility:
Public. |
Patch Set 1 #Patch Set 2 : . #
MessagesTotal messages: 8
Paolo, Splitting this test fixes the failures I described in http://gcc.gnu.org/ml/libstdc++/2011-03/msg00076.html OK for trunk? Thanks. Diego. 2011-03-18 Diego Novillo <dnovillo@google.com> * mixed-mode_neg-1.cc: Rename from mixed-mode_neg.cc * mixed-mode_neg-2.cc: Factor out of mixed-mode_neg-1.cc Index: mixed-mode_neg-1.cc =================================================================== --- mixed-mode_neg-1.cc (revision 171068) +++ mixed-mode_neg-1.cc (working copy) @@ -114,93 +114,5 @@ bad_lt (void) b6 = d < b128; // { dg-error "error" } } -void -bad_le (void) -{ - b1 = b32 <= f; // { dg-error "error" } - b2 = ld <= b32; // { dg-error "error" } - b3 = b64 <= d; // { dg-error "error" } - b4 = ld <= b64; // { dg-error "error" } - b5 = b128 <= ld; // { dg-error "error" } - b6 = d <= b128; // { dg-error "error" } -} - -void -bad_gt (void) -{ - b1 = b32 > f; // { dg-error "error" } - b2 = ld > b32; // { dg-error "error" } - b3 = b64 > d; // { dg-error "error" } - b4 = ld > b64; // { dg-error "error" } - b5 = b128 > ld; // { dg-error "error" } - b6 = d > b128; // { dg-error "error" } -} - -void -bad_ge (void) -{ - b1 = b32 >= f; // { dg-error "error" } - b2 = ld >= b32; // { dg-error "error" } - b3 = b64 >= d; // { dg-error "error" } - b4 = ld >= b64; // { dg-error "error" } - b5 = b128 >= ld; // { dg-error "error" } - b6 = d >= b128; // { dg-error "error" } -} - -void -bad_pluseq (void) -{ - a32 += f; // { dg-error "error" } - a32 += d; // { dg-error "error" } - a32 += ld; // { dg-error "error" } - a64 += f; // { dg-error "error" } - a64 += d; // { dg-error "error" } - a64 += ld; // { dg-error "error" } - a128 += f; // { dg-error "error" } - a128 += d; // { dg-error "error" } - a128 += ld; // { dg-error "error" } -} - -void -bad_minuseq (void) -{ - a32 -= f; // { dg-error "error" } - a32 -= d; // { dg-error "error" } - a32 -= ld; // { dg-error "error" } - a64 -= f; // { dg-error "error" } - a64 -= d; // { dg-error "error" } - a64 -= ld; // { dg-error "error" } - a128 -= f; // { dg-error "error" } - a128 -= d; // { dg-error "error" } - a128 -= ld; // { dg-error "error" } -} - -void -bad_timeseq (void) -{ - a32 *= f; // { dg-error "error" } - a32 *= d; // { dg-error "error" } - a32 *= ld; // { dg-error "error" } - a64 *= f; // { dg-error "error" } - a64 *= d; // { dg-error "error" } - a64 *= ld; // { dg-error "error" } - a128 *= f; // { dg-error "error" } - a128 *= d; // { dg-error "error" } - a128 *= ld; // { dg-error "error" } -} - -void -bad_divideeq (void) -{ - a32 /= f; // { dg-error "error" } - a32 /= d; // { dg-error "error" } - a32 /= ld; // { dg-error "error" } - a64 /= f; // { dg-error "error" } - a64 /= d; // { dg-error "error" } - a64 /= ld; // { dg-error "error" } - a128 /= f; // { dg-error "error" } - a128 /= d; // { dg-error "error" } - a128 /= ld; // { dg-error "error" } -} // { dg-excess-errors "notes about candidates" } Index: mixed-mode_neg-2.cc =================================================================== --- mixed-mode_neg-2.cc (revision 0) +++ mixed-mode_neg-2.cc (revision 0) @@ -0,0 +1,129 @@ +// Copyright (C) 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +// { dg-do compile } +// { dg-require-effective-target dfp } + +// Test that binary operators do not accept mixed decimal and generic +// floating-point operands. This isn't explicity prohibited in +// ISO/IEC TR 24733 but it is prohibited in C, and in C++ there should +// not be an implicit conversion from a decimal floating-point type to +// a generic floating-point type. + +#include <decimal/decimal> +#include <testsuite_hooks.h> + +using namespace std::decimal; + +decimal32 a32, b32, c32; +decimal64 a64, b64, c64; +decimal128 a128, b128, c128; +float f; +double d; +long double ld; +bool b1, b2, b3, b4, b5, b6; + +void +bad_le (void) +{ + b1 = b32 <= f; // { dg-error "error" } + b2 = ld <= b32; // { dg-error "error" } + b3 = b64 <= d; // { dg-error "error" } + b4 = ld <= b64; // { dg-error "error" } + b5 = b128 <= ld; // { dg-error "error" } + b6 = d <= b128; // { dg-error "error" } +} + +void +bad_gt (void) +{ + b1 = b32 > f; // { dg-error "error" } + b2 = ld > b32; // { dg-error "error" } + b3 = b64 > d; // { dg-error "error" } + b4 = ld > b64; // { dg-error "error" } + b5 = b128 > ld; // { dg-error "error" } + b6 = d > b128; // { dg-error "error" } +} + +void +bad_ge (void) +{ + b1 = b32 >= f; // { dg-error "error" } + b2 = ld >= b32; // { dg-error "error" } + b3 = b64 >= d; // { dg-error "error" } + b4 = ld >= b64; // { dg-error "error" } + b5 = b128 >= ld; // { dg-error "error" } + b6 = d >= b128; // { dg-error "error" } +} + +void +bad_pluseq (void) +{ + a32 += f; // { dg-error "error" } + a32 += d; // { dg-error "error" } + a32 += ld; // { dg-error "error" } + a64 += f; // { dg-error "error" } + a64 += d; // { dg-error "error" } + a64 += ld; // { dg-error "error" } + a128 += f; // { dg-error "error" } + a128 += d; // { dg-error "error" } + a128 += ld; // { dg-error "error" } +} + +void +bad_minuseq (void) +{ + a32 -= f; // { dg-error "error" } + a32 -= d; // { dg-error "error" } + a32 -= ld; // { dg-error "error" } + a64 -= f; // { dg-error "error" } + a64 -= d; // { dg-error "error" } + a64 -= ld; // { dg-error "error" } + a128 -= f; // { dg-error "error" } + a128 -= d; // { dg-error "error" } + a128 -= ld; // { dg-error "error" } +} + +void +bad_timeseq (void) +{ + a32 *= f; // { dg-error "error" } + a32 *= d; // { dg-error "error" } + a32 *= ld; // { dg-error "error" } + a64 *= f; // { dg-error "error" } + a64 *= d; // { dg-error "error" } + a64 *= ld; // { dg-error "error" } + a128 *= f; // { dg-error "error" } + a128 *= d; // { dg-error "error" } + a128 *= ld; // { dg-error "error" } +} + +void +bad_divideeq (void) +{ + a32 /= f; // { dg-error "error" } + a32 /= d; // { dg-error "error" } + a32 /= ld; // { dg-error "error" } + a64 /= f; // { dg-error "error" } + a64 /= d; // { dg-error "error" } + a64 /= ld; // { dg-error "error" } + a128 /= f; // { dg-error "error" } + a128 /= d; // { dg-error "error" } + a128 /= ld; // { dg-error "error" } +} + +// { dg-excess-errors "notes about candidates" } Index: mixed-mode_neg.cc =================================================================== --- mixed-mode_neg.cc (revision 171068) +++ mixed-mode_neg.cc (working copy) @@ -1,206 +0,0 @@ -// Copyright (C) 2009 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// { dg-do compile } -// { dg-require-effective-target dfp } - -// Test that binary operators do not accept mixed decimal and generic -// floating-point operands. This isn't explicity prohibited in -// ISO/IEC TR 24733 but it is prohibited in C, and in C++ there should -// not be an implicit conversion from a decimal floating-point type to -// a generic floating-point type. - -#include <decimal/decimal> -#include <testsuite_hooks.h> - -using namespace std::decimal; - -decimal32 a32, b32, c32; -decimal64 a64, b64, c64; -decimal128 a128, b128, c128; -float f; -double d; -long double ld; -bool b1, b2, b3, b4, b5, b6; - -void -bad_add (void) -{ - a32 = b32 + f; // { dg-error "error" } - a32 = ld + b32; // { dg-error "error" } - a64 = b64 + d; // { dg-error "error" } - a64 = ld + b64; // { dg-error "error" } - a128 = b128 + ld; // { dg-error "error" } - a128 = d + b128; // { dg-error "error" } -} - -void -bad_subtract (void) -{ - a32 = b32 - f; // { dg-error "error" } - a32 = ld - b32; // { dg-error "error" } - a64 = b64 - d; // { dg-error "error" } - a64 = ld - b64; // { dg-error "error" } - a128 = b128 - ld; // { dg-error "error" } - a128 = d - b128; // { dg-error "error" } -} - -void -bad_multiply (void) -{ - a32 = b32 * f; // { dg-error "error" } - a32 = ld * b32; // { dg-error "error" } - a64 = b64 * d; // { dg-error "error" } - a64 = ld * b64; // { dg-error "error" } - a128 = b128 * ld; // { dg-error "error" } - a128 = d * b128; // { dg-error "error" } -} - -void -bad_divide (void) -{ - a32 = b32 / f; // { dg-error "error" } - a32 = ld / b32; // { dg-error "error" } - a64 = b64 / d; // { dg-error "error" } - a64 = ld / b64; // { dg-error "error" } - a128 = b128 / ld; // { dg-error "error" } - a128 = d / b128; // { dg-error "error" } -} - -void -bad_eq (void) -{ - b1 = b32 == f; // { dg-error "error" } - b2 = ld == b32; // { dg-error "error" } - b3 = b64 == d; // { dg-error "error" } - b4 = ld == b64; // { dg-error "error" } - b5 = b128 == ld; // { dg-error "error" } - b6 = d == b128; // { dg-error "error" } -} - -void -bad_ne (void) -{ - b1 = b32 != f; // { dg-error "error" } - b2 = ld != b32; // { dg-error "error" } - b3 = b64 != d; // { dg-error "error" } - b4 = ld != b64; // { dg-error "error" } - b5 = b128 != ld; // { dg-error "error" } - b6 = d != b128; // { dg-error "error" } -} - -void -bad_lt (void) -{ - b1 = b32 < f; // { dg-error "error" } - b2 = ld < b32; // { dg-error "error" } - b3 = b64 < d; // { dg-error "error" } - b4 = ld < b64; // { dg-error "error" } - b5 = b128 < ld; // { dg-error "error" } - b6 = d < b128; // { dg-error "error" } -} - -void -bad_le (void) -{ - b1 = b32 <= f; // { dg-error "error" } - b2 = ld <= b32; // { dg-error "error" } - b3 = b64 <= d; // { dg-error "error" } - b4 = ld <= b64; // { dg-error "error" } - b5 = b128 <= ld; // { dg-error "error" } - b6 = d <= b128; // { dg-error "error" } -} - -void -bad_gt (void) -{ - b1 = b32 > f; // { dg-error "error" } - b2 = ld > b32; // { dg-error "error" } - b3 = b64 > d; // { dg-error "error" } - b4 = ld > b64; // { dg-error "error" } - b5 = b128 > ld; // { dg-error "error" } - b6 = d > b128; // { dg-error "error" } -} - -void -bad_ge (void) -{ - b1 = b32 >= f; // { dg-error "error" } - b2 = ld >= b32; // { dg-error "error" } - b3 = b64 >= d; // { dg-error "error" } - b4 = ld >= b64; // { dg-error "error" } - b5 = b128 >= ld; // { dg-error "error" } - b6 = d >= b128; // { dg-error "error" } -} - -void -bad_pluseq (void) -{ - a32 += f; // { dg-error "error" } - a32 += d; // { dg-error "error" } - a32 += ld; // { dg-error "error" } - a64 += f; // { dg-error "error" } - a64 += d; // { dg-error "error" } - a64 += ld; // { dg-error "error" } - a128 += f; // { dg-error "error" } - a128 += d; // { dg-error "error" } - a128 += ld; // { dg-error "error" } -} - -void -bad_minuseq (void) -{ - a32 -= f; // { dg-error "error" } - a32 -= d; // { dg-error "error" } - a32 -= ld; // { dg-error "error" } - a64 -= f; // { dg-error "error" } - a64 -= d; // { dg-error "error" } - a64 -= ld; // { dg-error "error" } - a128 -= f; // { dg-error "error" } - a128 -= d; // { dg-error "error" } - a128 -= ld; // { dg-error "error" } -} - -void -bad_timeseq (void) -{ - a32 *= f; // { dg-error "error" } - a32 *= d; // { dg-error "error" } - a32 *= ld; // { dg-error "error" } - a64 *= f; // { dg-error "error" } - a64 *= d; // { dg-error "error" } - a64 *= ld; // { dg-error "error" } - a128 *= f; // { dg-error "error" } - a128 *= d; // { dg-error "error" } - a128 *= ld; // { dg-error "error" } -} - -void -bad_divideeq (void) -{ - a32 /= f; // { dg-error "error" } - a32 /= d; // { dg-error "error" } - a32 /= ld; // { dg-error "error" } - a64 /= f; // { dg-error "error" } - a64 /= d; // { dg-error "error" } - a64 /= ld; // { dg-error "error" } - a128 /= f; // { dg-error "error" } - a128 /= d; // { dg-error "error" } - a128 /= ld; // { dg-error "error" } -} - -// { dg-excess-errors "notes about candidates" } -- This patch is available for review at http://codereview.appspot.com/4273077
Sign in to reply to this message.
On 03/18/2011 06:16 PM, dnovillo@google.com wrote: > Paolo, > > Splitting this test fixes the failures I described in > http://gcc.gnu.org/ml/libstdc++/2011-03/msg00076.html > > OK for trunk? Sure, it's Ok. A nit, however: we have been using quite consistently the *_neg suffix for such kind of testcases, I think mixed-mode-1_neg.cc and mixed-mode-2_neg.cc are better names. Paolo.
Sign in to reply to this message.
On Fri, Mar 18, 2011 at 13:23, Paolo Carlini <paolo.carlini@oracle.com> wrote: > On 03/18/2011 06:16 PM, dnovillo@google.com wrote: >> >> Paolo, >> >> Splitting this test fixes the failures I described in >> http://gcc.gnu.org/ml/libstdc++/2011-03/msg00076.html >> >> OK for trunk? > > Sure, it's Ok. A nit, however: we have been using quite consistently the > *_neg suffix for such kind of testcases, I think mixed-mode-1_neg.cc and > mixed-mode-2_neg.cc are better names. Will do. Thanks. Diego.
Sign in to reply to this message.
On 03/18/2011 06:29 PM, Diego Novillo wrote: > Will do. Thanks. Sorry again - otherwise I have to do it myself anyway: why don't you split it a more meaningful way, like splitting out all the comparisons? That would avoid the naming issue in the first place. Thanks, Paolo.
Sign in to reply to this message.
On Fri, Mar 18, 2011 at 13:31, Paolo Carlini <paolo.carlini@oracle.com> wrote: > On 03/18/2011 06:29 PM, Diego Novillo wrote: >> >> Will do. Thanks. > > Sorry again - otherwise I have to do it myself anyway: why don't you split > it a more meaningful way, like splitting out all the comparisons? That would > avoid the naming issue in the first place. I can split it any way you prefer. You mean create 14 files? Or two files, one with all the bad_<cmp> another with the bad_<op> ? Diego.
Sign in to reply to this message.
On 03/18/2011 06:34 PM, Diego Novillo wrote: > I can split it any way you prefer. You mean create 14 files? Or two > files, one with all the bad_<cmp> another with the bad_<op> ? Please split out the comparisons and create mixed-mode-comp_neg.cc, rename the existing file as mixed-mode-arith_neg.cc. Paolo.
Sign in to reply to this message.
On 03/18/2011 01:35 PM, Paolo Carlini wrote: > On 03/18/2011 06:34 PM, Diego Novillo wrote: >> I can split it any way you prefer. You mean create 14 files? Or two >> files, one with all the bad_<cmp> another with the bad_<op> ? > Please split out the comparisons and create mixed-mode-comp_neg.cc, > rename the existing file as mixed-mode-arith_neg.cc. > > Paolo. > Like this? Tested on my insanely deep tree and on mainline on x86_64. Thanks. Diego. 2011-03-18 Diego Novillo <dnovillo@google.com> * mixed-mode-arith_neg.cc: Rename from mixed-mode_neg.cc * mixed-mode-cmp_neg.cc: Factor out of mixed-mode-arith_neg.cc diff --git a/libstdc++-v3/testsuite/decimal/mixed-mode-arith_neg.cc b/libstdc++-v3/testsuite/decimal/mixed-mode-arith_neg.cc new file mode 100644 index 0000000..5cc67fb --- /dev/null +++ b/libstdc++-v3/testsuite/decimal/mixed-mode-arith_neg.cc @@ -0,0 +1,140 @@ +// Copyright (C) 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +// { dg-do compile } +// { dg-require-effective-target dfp } + +// Test that binary arithmetic operators do not accept mixed decimal +// and generic floating-point operands. This isn't explicity +// prohibited in ISO/IEC TR 24733 but it is prohibited in C, and in C++ +// there should not be an implicit conversion from a decimal +// floating-point type to a generic floating-point type. + +#include <decimal/decimal> +#include <testsuite_hooks.h> + +using namespace std::decimal; + +decimal32 a32, b32, c32; +decimal64 a64, b64, c64; +decimal128 a128, b128, c128; +float f; +double d; +long double ld; +bool b1, b2, b3, b4, b5, b6; + +void +bad_add (void) +{ + a32 = b32 + f; // { dg-error "error" } + a32 = ld + b32; // { dg-error "error" } + a64 = b64 + d; // { dg-error "error" } + a64 = ld + b64; // { dg-error "error" } + a128 = b128 + ld; // { dg-error "error" } + a128 = d + b128; // { dg-error "error" } +} + +void +bad_subtract (void) +{ + a32 = b32 - f; // { dg-error "error" } + a32 = ld - b32; // { dg-error "error" } + a64 = b64 - d; // { dg-error "error" } + a64 = ld - b64; // { dg-error "error" } + a128 = b128 - ld; // { dg-error "error" } + a128 = d - b128; // { dg-error "error" } +} + +void +bad_multiply (void) +{ + a32 = b32 * f; // { dg-error "error" } + a32 = ld * b32; // { dg-error "error" } + a64 = b64 * d; // { dg-error "error" } + a64 = ld * b64; // { dg-error "error" } + a128 = b128 * ld; // { dg-error "error" } + a128 = d * b128; // { dg-error "error" } +} + +void +bad_divide (void) +{ + a32 = b32 / f; // { dg-error "error" } + a32 = ld / b32; // { dg-error "error" } + a64 = b64 / d; // { dg-error "error" } + a64 = ld / b64; // { dg-error "error" } + a128 = b128 / ld; // { dg-error "error" } + a128 = d / b128; // { dg-error "error" } +} + +void +bad_pluseq (void) +{ + a32 += f; // { dg-error "error" } + a32 += d; // { dg-error "error" } + a32 += ld; // { dg-error "error" } + a64 += f; // { dg-error "error" } + a64 += d; // { dg-error "error" } + a64 += ld; // { dg-error "error" } + a128 += f; // { dg-error "error" } + a128 += d; // { dg-error "error" } + a128 += ld; // { dg-error "error" } +} + +void +bad_minuseq (void) +{ + a32 -= f; // { dg-error "error" } + a32 -= d; // { dg-error "error" } + a32 -= ld; // { dg-error "error" } + a64 -= f; // { dg-error "error" } + a64 -= d; // { dg-error "error" } + a64 -= ld; // { dg-error "error" } + a128 -= f; // { dg-error "error" } + a128 -= d; // { dg-error "error" } + a128 -= ld; // { dg-error "error" } +} + +void +bad_timeseq (void) +{ + a32 *= f; // { dg-error "error" } + a32 *= d; // { dg-error "error" } + a32 *= ld; // { dg-error "error" } + a64 *= f; // { dg-error "error" } + a64 *= d; // { dg-error "error" } + a64 *= ld; // { dg-error "error" } + a128 *= f; // { dg-error "error" } + a128 *= d; // { dg-error "error" } + a128 *= ld; // { dg-error "error" } +} + +void +bad_divideeq (void) +{ + a32 /= f; // { dg-error "error" } + a32 /= d; // { dg-error "error" } + a32 /= ld; // { dg-error "error" } + a64 /= f; // { dg-error "error" } + a64 /= d; // { dg-error "error" } + a64 /= ld; // { dg-error "error" } + a128 /= f; // { dg-error "error" } + a128 /= d; // { dg-error "error" } + a128 /= ld; // { dg-error "error" } +} + +// { dg-excess-errors "notes about candidates" } diff --git a/libstdc++-v3/testsuite/decimal/mixed-mode-cmp_neg.cc b/libstdc++-v3/testsuite/decimal/mixed-mode-cmp_neg.cc new file mode 100644 index 0000000..46a38ac --- /dev/null +++ b/libstdc++-v3/testsuite/decimal/mixed-mode-cmp_neg.cc @@ -0,0 +1,106 @@ +// Copyright (C) 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +// { dg-do compile } +// { dg-require-effective-target dfp } + +// Test that binary comparison operators do not accept mixed decimal +// and generic floating-point operands. This isn't explicity prohibited +// in ISO/IEC TR 24733 but it is prohibited in C, and in C++ there should +// not be an implicit conversion from a decimal floating-point type to a +// generic floating-point type. + +#include <decimal/decimal> +#include <testsuite_hooks.h> + +using namespace std::decimal; + +decimal32 a32, b32, c32; +decimal64 a64, b64, c64; +decimal128 a128, b128, c128; +float f; +double d; +long double ld; +bool b1, b2, b3, b4, b5, b6; + +void +bad_eq (void) +{ + b1 = b32 == f; // { dg-error "error" } + b2 = ld == b32; // { dg-error "error" } + b3 = b64 == d; // { dg-error "error" } + b4 = ld == b64; // { dg-error "error" } + b5 = b128 == ld; // { dg-error "error" } + b6 = d == b128; // { dg-error "error" } +} + +void +bad_ne (void) +{ + b1 = b32 != f; // { dg-error "error" } + b2 = ld != b32; // { dg-error "error" } + b3 = b64 != d; // { dg-error "error" } + b4 = ld != b64; // { dg-error "error" } + b5 = b128 != ld; // { dg-error "error" } + b6 = d != b128; // { dg-error "error" } +} + +void +bad_lt (void) +{ + b1 = b32 < f; // { dg-error "error" } + b2 = ld < b32; // { dg-error "error" } + b3 = b64 < d; // { dg-error "error" } + b4 = ld < b64; // { dg-error "error" } + b5 = b128 < ld; // { dg-error "error" } + b6 = d < b128; // { dg-error "error" } +} + +void +bad_le (void) +{ + b1 = b32 <= f; // { dg-error "error" } + b2 = ld <= b32; // { dg-error "error" } + b3 = b64 <= d; // { dg-error "error" } + b4 = ld <= b64; // { dg-error "error" } + b5 = b128 <= ld; // { dg-error "error" } + b6 = d <= b128; // { dg-error "error" } +} + +void +bad_gt (void) +{ + b1 = b32 > f; // { dg-error "error" } + b2 = ld > b32; // { dg-error "error" } + b3 = b64 > d; // { dg-error "error" } + b4 = ld > b64; // { dg-error "error" } + b5 = b128 > ld; // { dg-error "error" } + b6 = d > b128; // { dg-error "error" } +} + +void +bad_ge (void) +{ + b1 = b32 >= f; // { dg-error "error" } + b2 = ld >= b32; // { dg-error "error" } + b3 = b64 >= d; // { dg-error "error" } + b4 = ld >= b64; // { dg-error "error" } + b5 = b128 >= ld; // { dg-error "error" } + b6 = d >= b128; // { dg-error "error" } +} + +// { dg-excess-errors "notes about candidates" } diff --git a/libstdc++-v3/testsuite/decimal/mixed-mode_neg.cc b/libstdc++-v3/testsuite/decimal/mixed-mode_neg.cc deleted file mode 100644 index 7f9da43..0000000 --- a/libstdc++-v3/testsuite/decimal/mixed-mode_neg.cc +++ /dev/null @@ -1,206 +0,0 @@ -// Copyright (C) 2009 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// { dg-do compile } -// { dg-require-effective-target dfp } - -// Test that binary operators do not accept mixed decimal and generic -// floating-point operands. This isn't explicity prohibited in -// ISO/IEC TR 24733 but it is prohibited in C, and in C++ there should -// not be an implicit conversion from a decimal floating-point type to -// a generic floating-point type. - -#include <decimal/decimal> -#include <testsuite_hooks.h> - -using namespace std::decimal; - -decimal32 a32, b32, c32; -decimal64 a64, b64, c64; -decimal128 a128, b128, c128; -float f; -double d; -long double ld; -bool b1, b2, b3, b4, b5, b6; - -void -bad_add (void) -{ - a32 = b32 + f; // { dg-error "error" } - a32 = ld + b32; // { dg-error "error" } - a64 = b64 + d; // { dg-error "error" } - a64 = ld + b64; // { dg-error "error" } - a128 = b128 + ld; // { dg-error "error" } - a128 = d + b128; // { dg-error "error" } -} - -void -bad_subtract (void) -{ - a32 = b32 - f; // { dg-error "error" } - a32 = ld - b32; // { dg-error "error" } - a64 = b64 - d; // { dg-error "error" } - a64 = ld - b64; // { dg-error "error" } - a128 = b128 - ld; // { dg-error "error" } - a128 = d - b128; // { dg-error "error" } -} - -void -bad_multiply (void) -{ - a32 = b32 * f; // { dg-error "error" } - a32 = ld * b32; // { dg-error "error" } - a64 = b64 * d; // { dg-error "error" } - a64 = ld * b64; // { dg-error "error" } - a128 = b128 * ld; // { dg-error "error" } - a128 = d * b128; // { dg-error "error" } -} - -void -bad_divide (void) -{ - a32 = b32 / f; // { dg-error "error" } - a32 = ld / b32; // { dg-error "error" } - a64 = b64 / d; // { dg-error "error" } - a64 = ld / b64; // { dg-error "error" } - a128 = b128 / ld; // { dg-error "error" } - a128 = d / b128; // { dg-error "error" } -} - -void -bad_eq (void) -{ - b1 = b32 == f; // { dg-error "error" } - b2 = ld == b32; // { dg-error "error" } - b3 = b64 == d; // { dg-error "error" } - b4 = ld == b64; // { dg-error "error" } - b5 = b128 == ld; // { dg-error "error" } - b6 = d == b128; // { dg-error "error" } -} - -void -bad_ne (void) -{ - b1 = b32 != f; // { dg-error "error" } - b2 = ld != b32; // { dg-error "error" } - b3 = b64 != d; // { dg-error "error" } - b4 = ld != b64; // { dg-error "error" } - b5 = b128 != ld; // { dg-error "error" } - b6 = d != b128; // { dg-error "error" } -} - -void -bad_lt (void) -{ - b1 = b32 < f; // { dg-error "error" } - b2 = ld < b32; // { dg-error "error" } - b3 = b64 < d; // { dg-error "error" } - b4 = ld < b64; // { dg-error "error" } - b5 = b128 < ld; // { dg-error "error" } - b6 = d < b128; // { dg-error "error" } -} - -void -bad_le (void) -{ - b1 = b32 <= f; // { dg-error "error" } - b2 = ld <= b32; // { dg-error "error" } - b3 = b64 <= d; // { dg-error "error" } - b4 = ld <= b64; // { dg-error "error" } - b5 = b128 <= ld; // { dg-error "error" } - b6 = d <= b128; // { dg-error "error" } -} - -void -bad_gt (void) -{ - b1 = b32 > f; // { dg-error "error" } - b2 = ld > b32; // { dg-error "error" } - b3 = b64 > d; // { dg-error "error" } - b4 = ld > b64; // { dg-error "error" } - b5 = b128 > ld; // { dg-error "error" } - b6 = d > b128; // { dg-error "error" } -} - -void -bad_ge (void) -{ - b1 = b32 >= f; // { dg-error "error" } - b2 = ld >= b32; // { dg-error "error" } - b3 = b64 >= d; // { dg-error "error" } - b4 = ld >= b64; // { dg-error "error" } - b5 = b128 >= ld; // { dg-error "error" } - b6 = d >= b128; // { dg-error "error" } -} - -void -bad_pluseq (void) -{ - a32 += f; // { dg-error "error" } - a32 += d; // { dg-error "error" } - a32 += ld; // { dg-error "error" } - a64 += f; // { dg-error "error" } - a64 += d; // { dg-error "error" } - a64 += ld; // { dg-error "error" } - a128 += f; // { dg-error "error" } - a128 += d; // { dg-error "error" } - a128 += ld; // { dg-error "error" } -} - -void -bad_minuseq (void) -{ - a32 -= f; // { dg-error "error" } - a32 -= d; // { dg-error "error" } - a32 -= ld; // { dg-error "error" } - a64 -= f; // { dg-error "error" } - a64 -= d; // { dg-error "error" } - a64 -= ld; // { dg-error "error" } - a128 -= f; // { dg-error "error" } - a128 -= d; // { dg-error "error" } - a128 -= ld; // { dg-error "error" } -} - -void -bad_timeseq (void) -{ - a32 *= f; // { dg-error "error" } - a32 *= d; // { dg-error "error" } - a32 *= ld; // { dg-error "error" } - a64 *= f; // { dg-error "error" } - a64 *= d; // { dg-error "error" } - a64 *= ld; // { dg-error "error" } - a128 *= f; // { dg-error "error" } - a128 *= d; // { dg-error "error" } - a128 *= ld; // { dg-error "error" } -} - -void -bad_divideeq (void) -{ - a32 /= f; // { dg-error "error" } - a32 /= d; // { dg-error "error" } - a32 /= ld; // { dg-error "error" } - a64 /= f; // { dg-error "error" } - a64 /= d; // { dg-error "error" } - a64 /= ld; // { dg-error "error" } - a128 /= f; // { dg-error "error" } - a128 /= d; // { dg-error "error" } - a128 /= ld; // { dg-error "error" } -} - -// { dg-excess-errors "notes about candidates" }
Sign in to reply to this message.
|