From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29052 invoked by alias); 16 Mar 2002 02:56:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 29004 invoked by uid 71); 16 Mar 2002 02:56:01 -0000 Resent-Date: 16 Mar 2002 02:56:01 -0000 Resent-Message-ID: <20020316025601.29003.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, zhenggen@public1.ptt.js.cn Received:(qmail 14917 invoked by uid 61); 16 Mar 2002 02:49:53 -0000 Message-Id:<20020316024953.14916.qmail@sources.redhat.com> Date: Fri, 15 Mar 2002 18:56:00 -0000 From: zhenggen@public1.ptt.js.cn Reply-To: zhenggen@public1.ptt.js.cn To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version:gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: ada/5978: A short-circuit return statement should be added to a-ngcefu.adb X-SW-Source: 2002-03/txt/msg00549.txt.bz2 List-Id: >Number: 5978 >Category: ada >Synopsis: A short-circuit return statement should be added to a-ngcefu.adb >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Mar 15 18:56:00 PST 2002 >Closed-Date: >Last-Modified: >Originator: zhenggen@public1.ptt.js.cn >Release: any >Organization: >Environment: any >Description: Code fragment in gcc/gcc/ada/a-ngcefu.adb: line309: if abs Re (X) < Square_Root_Epsilon and then line310: abs Im (X) < Square_Root_Epsilon line311: then line312: return X; line313: line314: elsif abs Re (X) > Inv_Square_Root_Epsilon or else line315: abs Im (X) > Inv_Square_Root_Epsilon line316: then line317: Result := -Complex_I * (Log (Complex_I * X) + Log (2.0 * Complex_I)); line318: line319: if Im (Result) > PI_2 then line320: Set_Im (Result, PI - Im (X)); line321: line322: elsif Im (Result) < -PI_2 then line323: Set_Im (Result, -(PI + Im (X))); line324: end if; line325: end if; line326: line327: Result := -Complex_I * Log (Complex_I * X + Sqrt (1.0 - X * X)); A short-circuit statement "return Result;" should be placed between line324 and line325. Otherwise the assignment in line327 will modify the value of "Result". >How-To-Repeat: >Fix: Place a statement "Return Result;" between line324 and line325 in gcc/gcc/ada/a-ngcefu.adb >Release-Note: >Audit-Trail: >Unformatted: