1 // Copyright (C) 2009-2020 Free Software Foundation, Inc. 2 // 3 // This file is part of the GNU ISO C++ Library. This library is free 4 // software; you can redistribute it and/or modify it under the 5 // terms of the GNU General Public License as published by the 6 // Free Software Foundation; either version 3, or (at your option) 7 // any later version. 8 9 // This library is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 14 // You should have received a copy of the GNU General Public License along 15 // with this library; see the file COPYING3. If not see 16 // <http://www.gnu.org/licenses/>. 17 18 // { dg-require-effective-target dfp } 19 // { dg-options "-Wno-pedantic" } 20 21 // ISO/IEC TR 24733 3.2.2.1 Construct/copy/destroy (decimal32). 22 // ISO/IEC TR 24733 3.2.3.1 Construct/copy/destroy (decimal64). 23 // ISO/IEC TR 24733 3.2.4.1 Construct/copy/destroy (decimal128). 24 25 // Test the default constructor. 26 27 #include <decimal/decimal> 28 #include <cstring> 29 #include <testsuite_hooks.h> 30 31 using namespace std::decimal; 32 33 void ctor_32(void)34ctor_32 (void) 35 { 36 decimal32 a; 37 float b __attribute__((mode(SD))) = 0.e-101DF; 38 39 VERIFY (std::memcmp (&a, &b, 4) == 0); 40 } 41 42 void ctor_64(void)43ctor_64 (void) 44 { 45 decimal64 a; 46 float b __attribute__((mode(DD))) = 0.e-398DD; 47 48 VERIFY (std::memcmp (&a, &b, 8) == 0); 49 } 50 51 void ctor_128(void)52ctor_128 (void) 53 { 54 decimal128 a; 55 float b __attribute__((mode(TD))) = 0.e-6176DL; 56 57 VERIFY (std::memcmp (&a, &b, 16) == 0); 58 } 59 60 int main()61main () 62 { 63 ctor_32 (); 64 ctor_64 (); 65 ctor_128 (); 66 } 67