public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug ada/112461] New: [14 regression] Simple return inside extended return loses updates to return object value
@ 2023-11-09 15:01 simon at pushface dot org
2023-11-10 8:16 ` [Bug ada/112461] " rguenth at gcc dot gnu.org
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: simon at pushface dot org @ 2023-11-09 15:01 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112461
Bug ID: 112461
Summary: [14 regression] Simple return inside extended return
loses updates to return object value
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: ada
Assignee: unassigned at gcc dot gnu.org
Reporter: simon at pushface dot org
CC: dkm at gcc dot gnu.org
Target Milestone: ---
In a complicated extended return[1] with this structure
-- Calculate the sum of the natural numbers up to & including the
-- given limit.
function Add (Up_To : Natural) return Natural is
Round : Natural := 0;
begin
return Result : Natural := 0 do
loop
Result := Result + Round;
if Round = Up_To then
return;
end if;
Round := Round + 1;
end loop;
end return;
end Add;
what was returned was the equivalent of the initial value (here, 0) rather
than the value as updated in the loop (NB! this simple loop doesn’t fail,
I only include it as an example, since I don’t have a simple reproducer).
The problem was introduced after 20231008.
[1]
https://github.com/alire-project/alire/blob/a69ac7c7a24590bdfe1ca77bcb60386551989696/src/alire/alire-properties-from_toml.adb#L14
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug ada/112461] [14 regression] Simple return inside extended return loses updates to return object value
2023-11-09 15:01 [Bug ada/112461] New: [14 regression] Simple return inside extended return loses updates to return object value simon at pushface dot org
@ 2023-11-10 8:16 ` rguenth at gcc dot gnu.org
2023-11-10 10:05 ` [Bug ada/112461] [14 regression] premature finalization with nested return inside extended one ebotcazou at gcc dot gnu.org
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: rguenth at gcc dot gnu.org @ 2023-11-10 8:16 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112461
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |14.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug ada/112461] [14 regression] premature finalization with nested return inside extended one
2023-11-09 15:01 [Bug ada/112461] New: [14 regression] Simple return inside extended return loses updates to return object value simon at pushface dot org
2023-11-10 8:16 ` [Bug ada/112461] " rguenth at gcc dot gnu.org
@ 2023-11-10 10:05 ` ebotcazou at gcc dot gnu.org
2023-11-10 10:06 ` ebotcazou at gcc dot gnu.org
2023-12-04 10:05 ` ebotcazou at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: ebotcazou at gcc dot gnu.org @ 2023-11-10 10:05 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112461
Eric Botcazou <ebotcazou at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|[14 regression] Simple |[14 regression] premature
|return inside extended |finalization with nested
|return loses updates to |return inside extended one
|return object value |
Ever confirmed|0 |1
CC| |ebotcazou at gcc dot gnu.org
Last reconfirmed| |2023-11-10
Status|UNCONFIRMED |NEW
--- Comment #1 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
Yes, by commit 2e135bdb28d386b0cda2ee7e35338ad06136042d, but the issue was
preexisting if the return type is limited. The fix is upcoming.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug ada/112461] [14 regression] premature finalization with nested return inside extended one
2023-11-09 15:01 [Bug ada/112461] New: [14 regression] Simple return inside extended return loses updates to return object value simon at pushface dot org
2023-11-10 8:16 ` [Bug ada/112461] " rguenth at gcc dot gnu.org
2023-11-10 10:05 ` [Bug ada/112461] [14 regression] premature finalization with nested return inside extended one ebotcazou at gcc dot gnu.org
@ 2023-11-10 10:06 ` ebotcazou at gcc dot gnu.org
2023-12-04 10:05 ` ebotcazou at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: ebotcazou at gcc dot gnu.org @ 2023-11-10 10:06 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112461
Eric Botcazou <ebotcazou at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |ebotcazou at gcc dot gnu.org
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug ada/112461] [14 regression] premature finalization with nested return inside extended one
2023-11-09 15:01 [Bug ada/112461] New: [14 regression] Simple return inside extended return loses updates to return object value simon at pushface dot org
` (2 preceding siblings ...)
2023-11-10 10:06 ` ebotcazou at gcc dot gnu.org
@ 2023-12-04 10:05 ` ebotcazou at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: ebotcazou at gcc dot gnu.org @ 2023-12-04 10:05 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112461
Eric Botcazou <ebotcazou at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |FIXED
Status|ASSIGNED |RESOLVED
--- Comment #2 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
https://gcc.gnu.org/g:f6bbf84ec759f203251c6c5a0dec8344f17cc614
commit r14-5909-gf6bbf84ec759f203251c6c5a0dec8344f17cc614
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Wed Nov 8 23:29:01 2023 +0100
ada: Fix premature finalization for nested return within extended one
The return object is incorrectly finalized when the nested return is taken,
because the special flag attached to the return object is not updated.
gcc/ada/
* exp_ch6.adb (Build_Flag_For_Function): New function made up of
the
code building the special flag for return object present...
(Expand_N_Extended_Return_Statement): ...in there. Replace the
code
with a call to Build_Flag_For_Function. Add assertion for the
flag.
(Expand_Non_Function_Return): For a nested return, if the return
object needs finalization actions, update the special flag.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-12-04 10:05 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-09 15:01 [Bug ada/112461] New: [14 regression] Simple return inside extended return loses updates to return object value simon at pushface dot org
2023-11-10 8:16 ` [Bug ada/112461] " rguenth at gcc dot gnu.org
2023-11-10 10:05 ` [Bug ada/112461] [14 regression] premature finalization with nested return inside extended one ebotcazou at gcc dot gnu.org
2023-11-10 10:06 ` ebotcazou at gcc dot gnu.org
2023-12-04 10:05 ` ebotcazou at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).