From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3131 invoked by alias); 2 Aug 2012 09:37:01 -0000 Received: (qmail 3115 invoked by uid 22791); 2 Aug 2012 09:37:00 -0000 X-SWARE-Spam-Status: No, hits=-7.3 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_DNSWL_HI,RCVD_IN_HOSTKARMA_NO,RCVD_IN_HOSTKARMA_YE,TW_DF,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from rcsinet15.oracle.com (HELO rcsinet15.oracle.com) (148.87.113.117) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 02 Aug 2012 09:36:47 +0000 Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by rcsinet15.oracle.com (Sentrion-MTA-4.2.2/Sentrion-MTA-4.2.2) with ESMTP id q729ajHa029948 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 2 Aug 2012 09:36:46 GMT Received: from acsmt356.oracle.com (acsmt356.oracle.com [141.146.40.156]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id q729ailL013667 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 2 Aug 2012 09:36:45 GMT Received: from abhmt114.oracle.com (abhmt114.oracle.com [141.146.116.66]) by acsmt356.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id q729ai8D026348; Thu, 2 Aug 2012 04:36:44 -0500 Received: from [192.168.1.4] (/79.43.235.191) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 02 Aug 2012 02:36:44 -0700 Message-ID: <501A4A2A.6090808@oracle.com> Date: Thu, 02 Aug 2012 09:37:00 -0000 From: Paolo Carlini User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120713 Thunderbird/14.0 MIME-Version: 1.0 To: Peter Bergner CC: Janis Johnson , gcc-patches@gcc.gnu.org, libstdc++@gcc.gnu.org Subject: Re: PING [PATCH] Fix PR libstdc++/54036, problem negating DFP NaNs References: <20120731174612.2f6fb986db4a93c56e9da485@vnet.ibm.com> <50193D2D.1000106@oracle.com> <50194A40.8010505@mentor.com> <20120801185335.1b381d653a911b8c0d5b9ec4@vnet.ibm.com> In-Reply-To: <20120801185335.1b381d653a911b8c0d5b9ec4@vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2012-08/txt/msg00080.txt.bz2 Hi, On 08/02/2012 01:53 AM, Peter Bergner wrote: > So just to be sure, like the patch below? More or less. See comments below. > Also, is this ok for the 4.6 and 4.7 release branches? I don't think this is a regression, thus I would say 4.7 only, to be safe. > Peter > > > libstdc++-v3/ > PR libstdc++/54036 > * include/decimal/decimal.h (_DEFINE_DECIMAL_UNARY_OP): Use _Op as > a unary operator. > > libstdc++-v3/testsuite/ > PR libstdc++/54036 > * decimal/pr54036-1.cc: New test. > * decimal/pr54036-2.cc: Likewise. > * decimal/pr54036-3.cc: Likewise. we don't have a separate ChangeLog in libstdc++-v3/testsuite/. Thus a single ChangeLog entry for everything. > > Index: libstdc++-v3/include/decimal/decimal.h > =================================================================== > --- libstdc++-v3/include/decimal/decimal.h (revision 189599) > +++ libstdc++-v3/include/decimal/decimal.h (working copy) > @@ -288,7 +288,7 @@ > inline _Tp operator _Op(_Tp __rhs) \ > { \ > _Tp __tmp; \ > - __tmp.__setval(0 _Op __rhs.__getval()); \ > + __tmp.__setval(_Op __rhs.__getval()); \ > return __tmp; \ > } > > Index: libstdc++-v3/testsuite/decimal/pr54036-1.cc > =================================================================== > --- libstdc++-v3/testsuite/decimal/pr54036-1.cc (revision 0) > +++ libstdc++-v3/testsuite/decimal/pr54036-1.cc (revision 0) > @@ -0,0 +1,56 @@ Copyright blurb missing. Also, you need: // { dg-require-effective-target dfp } Likewise for the other testcases. > +#include > +using namespace std; > + > +decimal::decimal32 > +__attribute__ ((noinline)) > +my_nan32 (void) > +{ > + decimal::decimal32 z = 0; > + decimal::decimal32 v = z/z; > + return v; > +} > + > +decimal::decimal32 > +__attribute__ ((noinline)) > +my_inf32 (void) > +{ > + decimal::decimal32 o = 1; > + decimal::decimal32 z = 0; > + decimal::decimal32 v = o/z; > + return v; > +} > + > +int > +main (void) > +{ > + decimal::decimal32 v; > + > + v = my_nan32 (); > + if (!__builtin_isnand32 (v.__getval ())) > + __builtin_abort (); > + if (__builtin_signbitd32 (v.__getval ())) > + __builtin_abort (); > + > + v = -v; > + > + if (!__builtin_isnand32 (v.__getval ())) > + __builtin_abort (); > + if (!__builtin_signbitd32 (v.__getval ())) > + __builtin_abort (); > + > + v = my_inf32 (); > + if (!__builtin_isinfd32 (v.__getval ())) > + __builtin_abort (); > + if (__builtin_signbitd32 (v.__getval ())) > + __builtin_abort (); > + > + v = -v; > + > + if (!__builtin_isinfd32 (v.__getval ())) > + __builtin_abort (); > + if (!__builtin_signbitd32 (v.__getval ())) > + __builtin_abort (); > + > + return 0; > +} > + In the library testsuite we include: #include and then we use VERIFY not __builtin_abort. Also, for decimal, we normally use: using namespace std::decimal. Please have the other existing decimal floating point testcases as reference, for these details, please try to be consistent. Also, watch out blank lines at the end of the testcases. Paolo.