From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id D85E53858401; Mon, 31 Jul 2023 14:58:18 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D85E53858401 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1690815498; bh=dofwObnswha0+3SA8bCmyDzYLKl/auV/osF/snHW5ic=; h=From:To:Subject:Date:In-Reply-To:References:From; b=uu0H0EKaolbs4ZF991BuXKs6LHhglyQQrS6l3JUk/r/RU5CcmV7MhFCimh8z5Pfu/ D1Jof3XosmI5WrvZNZooY4TxJy/eVjD9IEX3ygO/QlWr2jnucmqM6g3WMM8E6400IW QG/E2kcBLXm0/VEyQLRWANjWVmVouiW6dAw9y4kM= From: "mikael at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug testsuite/110419] [14 regression] new test case gfortran.dg/value_9.f90 in r14-2050-gd130ae8499e0c6 fails Date: Mon, 31 Jul 2023 14:58:18 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: testsuite X-Bugzilla-Version: 14.0 X-Bugzilla-Keywords: testsuite-fail X-Bugzilla-Severity: normal X-Bugzilla-Who: mikael at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 14.0 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: attachments.created Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D110419 --- Comment #18 from Mikael Morin --- Created attachment 55662 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=3D55662&action=3Dedit Updated tentative patch This fixes comment #4 as well, but the failure on value_9 remains on 32 bit powerpc. It is almost testsuite clean on x86_64. There is a regression on c_char_tests_2.f03 because there is a hole in the handling of single char values in gfc_conv_procedure_call. Length one arguments are handled with: 6436 else if (fsym && fsym->attr.value) 6437 { 6438 if (fsym->ts.type =3D=3D BT_CHARACTER 6439 && fsym->ts.is_c_interop 6440 && fsym->ns->proc_name !=3D NULL 6441 && fsym->ns->proc_name->attr.is_bind_c) 6442 { .... // Pass single char value 6447 } 6448 else 6449 { 6450 gfc_conv_expr (&parmse, e); 6451 ....=20=20=20=20=20=20=20=20=20=20=20=20 6456 if (!fsym->ts.is_c_interop 6457 && gfc_length_one_character_type_p (&fsym->ts)) 6458 { .... // pass single char value The failing case is when the type is interoperable (character(c_char)), but= the procedure is not bind(c). So the translation from string to single charact= er is neither done in the if branch (the procedure is not bind(c)) nor in the = if of the else branch (the type is interoperable).=