<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gcc.git/gcc/ada, branch master</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/'/>
<entry>
<title>Daily bump.</title>
<updated>2025-11-22T00:20:52+00:00</updated>
<author>
<name>GCC Administrator</name>
<email>gccadmin@gcc.gnu.org</email>
</author>
<published>2025-11-22T00:20:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=10e987956f243550b174922722fff7798ebd54c2'/>
<id>10e987956f243550b174922722fff7798ebd54c2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ada: Follow-on for duplicate formal iterator names</title>
<updated>2025-11-21T08:29:37+00:00</updated>
<author>
<name>Bob Duff</name>
<email>duff@adacore.com</email>
</author>
<published>2025-11-12T19:53:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=ebabae605093e5a31c37ef6e5e3e809f13501f70'/>
<id>ebabae605093e5a31c37ef6e5e3e809f13501f70</id>
<content type='text'>
A previous fix titled "Avoid incorrect errors for duplicate formal
iterator names" caused regressions. This patch cleans it up.

In particular, the previous patch involved calling Preanalyze on
a block statement in order to get the scope created, and then
later calling Analyze on the same block statement. This caused
certain temps created inside the block statement to be
incorrectly duplicated. The fix here is to avoid setting
the Statements of the block until after it has been
preanalyzed.

gcc/ada/ChangeLog:

	* exp_ch5.adb (Expand_Formal_Container_Loop):
	Preanalyze block with empty statements; then set
	the statements later before doing Analyze of the
	block.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A previous fix titled "Avoid incorrect errors for duplicate formal
iterator names" caused regressions. This patch cleans it up.

In particular, the previous patch involved calling Preanalyze on
a block statement in order to get the scope created, and then
later calling Analyze on the same block statement. This caused
certain temps created inside the block statement to be
incorrectly duplicated. The fix here is to avoid setting
the Statements of the block until after it has been
preanalyzed.

gcc/ada/ChangeLog:

	* exp_ch5.adb (Expand_Formal_Container_Loop):
	Preanalyze block with empty statements; then set
	the statements later before doing Analyze of the
	block.
</pre>
</div>
</content>
</entry>
<entry>
<title>ada: Remove obsolete call to Establish_Transient_Scope</title>
<updated>2025-11-21T08:29:37+00:00</updated>
<author>
<name>Eric Botcazou</name>
<email>ebotcazou@adacore.com</email>
</author>
<published>2025-11-12T15:13:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=56722ed86ead6226148f7fc73fbf5691be2e37b2'/>
<id>56722ed86ead6226148f7fc73fbf5691be2e37b2</id>
<content type='text'>
There is a preceding call to Establish_Transient_Scope in the procedure for
the cases where it is required, and we no longer build the aggregate on the
stack before copying it to the heap for an allocator.

gcc/ada/ChangeLog:

	* exp_aggr.adb (Expand_Array_Aggregate): Remove obsolete call to
	Establish_Transient_Scope for an allocator in a loop.
	* exp_ch7.adb (Establish_Transient_Scope): Adjust description.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There is a preceding call to Establish_Transient_Scope in the procedure for
the cases where it is required, and we no longer build the aggregate on the
stack before copying it to the heap for an allocator.

gcc/ada/ChangeLog:

	* exp_aggr.adb (Expand_Array_Aggregate): Remove obsolete call to
	Establish_Transient_Scope for an allocator in a loop.
	* exp_ch7.adb (Establish_Transient_Scope): Adjust description.
</pre>
</div>
</content>
</entry>
<entry>
<title>ada: Sort cross-reference table using heap and not stack</title>
<updated>2025-11-21T08:29:37+00:00</updated>
<author>
<name>Piotr Trojanek</name>
<email>trojanek@adacore.com</email>
</author>
<published>2025-11-05T19:14:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=57d3933a8705bcea91d8a7189d7d5d5edce14524'/>
<id>57d3933a8705bcea91d8a7189d7d5d5edce14524</id>
<content type='text'>
Cross-references are used by GNATprove for code that is not in SPARK. They are
sorted using an auxiliary array. This array should be allocated on the heap and
not on stack, because it can be arbitrarily large, especially for
auto-generated code.

gcc/ada/ChangeLog:

	* lib-xref.adb (Output_References): Put local array object on the heap.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Cross-references are used by GNATprove for code that is not in SPARK. They are
sorted using an auxiliary array. This array should be allocated on the heap and
not on stack, because it can be arbitrarily large, especially for
auto-generated code.

gcc/ada/ChangeLog:

	* lib-xref.adb (Output_References): Put local array object on the heap.
</pre>
</div>
</content>
</entry>
<entry>
<title>ada: Avoid non-serious errors masking fatal errors</title>
<updated>2025-11-21T08:29:37+00:00</updated>
<author>
<name>Viljar Indus</name>
<email>indus@adacore.com</email>
</author>
<published>2025-11-11T12:57:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=c9aeb782c7899c616ed122a68119b12c04e3c82c'/>
<id>c9aeb782c7899c616ed122a68119b12c04e3c82c</id>
<content type='text'>
Is_Redundant_Error_Message is used to filter diagnostic messages
that would appear on the same line to avoid the noise comming from
cascading error messages. However we still want to trigger an error
even if the line already had a warning or a non-serious error at the
same location so that we now that a fatal error has occured and the
compiler knows how to exit correctly in that scenario.

gcc/ada/ChangeLog:

	* erroutc.adb (Is_Redundant_Error_Message): Avoid non-serious errors
	masking fatal errors.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Is_Redundant_Error_Message is used to filter diagnostic messages
that would appear on the same line to avoid the noise comming from
cascading error messages. However we still want to trigger an error
even if the line already had a warning or a non-serious error at the
same location so that we now that a fatal error has occured and the
compiler knows how to exit correctly in that scenario.

gcc/ada/ChangeLog:

	* erroutc.adb (Is_Redundant_Error_Message): Avoid non-serious errors
	masking fatal errors.
</pre>
</div>
</content>
</entry>
<entry>
<title>ada: Update description of extra formals for build-in-place functions.</title>
<updated>2025-11-21T08:29:37+00:00</updated>
<author>
<name>Eric Botcazou</name>
<email>ebotcazou@adacore.com</email>
</author>
<published>2025-11-11T22:54:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=249d08eb121aa569208a9688894c7246fd1e22a1'/>
<id>249d08eb121aa569208a9688894c7246fd1e22a1</id>
<content type='text'>
This updates the description of the various kinds of extra formals after the
latest change made to the implementation.

gcc/ada/ChangeLog:

	* exp_ch6.ads (BIP_Formal_Kind): Update description of some values.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This updates the description of the various kinds of extra formals after the
latest change made to the implementation.

gcc/ada/ChangeLog:

	* exp_ch6.ads (BIP_Formal_Kind): Update description of some values.
</pre>
</div>
</content>
</entry>
<entry>
<title>ada: Fix warnings given by static analyzer on Exp_Ch4</title>
<updated>2025-11-21T08:29:37+00:00</updated>
<author>
<name>Eric Botcazou</name>
<email>ebotcazou@adacore.com</email>
</author>
<published>2025-11-11T20:12:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=35f7214070c05198baf266c12606d947b7c2280c'/>
<id>35f7214070c05198baf266c12606d947b7c2280c</id>
<content type='text'>
gcc/ada/ChangeLog:

	* exp_ch4.adb (Expand_N_Op_Eq): Use No instead of not Present.
	(Optimize_Length_Comparison): Initialize Is_Zero and Comp variables.
	(Safe_In_Place_Array_Op): Do not use local variable to pass data to
	nested function Is_Safe_Operand.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
gcc/ada/ChangeLog:

	* exp_ch4.adb (Expand_N_Op_Eq): Use No instead of not Present.
	(Optimize_Length_Comparison): Initialize Is_Zero and Comp variables.
	(Safe_In_Place_Array_Op): Do not use local variable to pass data to
	nested function Is_Safe_Operand.
</pre>
</div>
</content>
</entry>
<entry>
<title>ada: No extra formals on anonymous access types of C subprograms</title>
<updated>2025-11-21T08:29:37+00:00</updated>
<author>
<name>Javier Miranda</name>
<email>miranda@adacore.com</email>
</author>
<published>2025-11-11T19:00:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=f656344f5fad97f67bd12797a37bb5922021fd5c'/>
<id>f656344f5fad97f67bd12797a37bb5922021fd5c</id>
<content type='text'>
Extra formals must not be added to anonymous access to subprogram
types defined in the profile of imported C subprograms.

gcc/ada/ChangeLog:

	* sem_ch6.adb (Create_Extra_Formals): Do not add extra formals to
	anonymous access to subprogram types defined in the profile of
	subprograms that have foreign convention.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Extra formals must not be added to anonymous access to subprogram
types defined in the profile of imported C subprograms.

gcc/ada/ChangeLog:

	* sem_ch6.adb (Create_Extra_Formals): Do not add extra formals to
	anonymous access to subprogram types defined in the profile of
	subprograms that have foreign convention.
</pre>
</div>
</content>
</entry>
<entry>
<title>ada: Fix memory leak for unconstrained limited arrays in anonymous contexts</title>
<updated>2025-11-21T08:29:37+00:00</updated>
<author>
<name>Eric Botcazou</name>
<email>ebotcazou@adacore.com</email>
</author>
<published>2025-11-11T09:35:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=0c8271742f32fcf08f0b5818aaad2daafff89b62'/>
<id>0c8271742f32fcf08f0b5818aaad2daafff89b62</id>
<content type='text'>
A change made a long time ago has introduced a leak of the secondary stack
at run time for unconstrained limited non-controlled arrays in anonymous
contexts, because of the lack of a transient scope in these contexts.

The large comment preceding the call to Establish_Transient_Scope in the
Resolve_Call procedure explains the strategy for build-in-place functions,
so the best course of action is probably to revert the commit and to fix
the original problem along the lines of the comment.

gcc/ada/ChangeLog:

	* exp_ch3.adb (Expand_N_Object_Declaration): Delete ancient comment.
	* exp_ch6.adb (Expand_Call_Helper): Do not establish a transient
	scope for build-in-place functions in anonymous contexts here...
	(Make_Build_In_Place_Call_In_Anonymous_Context): ...but here instead.
	* sem_attr.adb (Resolve_Attribute) &lt;Attribute_Range&gt;: Remove obsolete
	code dealing with transient scopes.
	* sem_res.adb (Resolve_Actuals): Likewise.
	(Resolve_Call): Adjust comment on the strategy for transient scopes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A change made a long time ago has introduced a leak of the secondary stack
at run time for unconstrained limited non-controlled arrays in anonymous
contexts, because of the lack of a transient scope in these contexts.

The large comment preceding the call to Establish_Transient_Scope in the
Resolve_Call procedure explains the strategy for build-in-place functions,
so the best course of action is probably to revert the commit and to fix
the original problem along the lines of the comment.

gcc/ada/ChangeLog:

	* exp_ch3.adb (Expand_N_Object_Declaration): Delete ancient comment.
	* exp_ch6.adb (Expand_Call_Helper): Do not establish a transient
	scope for build-in-place functions in anonymous contexts here...
	(Make_Build_In_Place_Call_In_Anonymous_Context): ...but here instead.
	* sem_attr.adb (Resolve_Attribute) &lt;Attribute_Range&gt;: Remove obsolete
	code dealing with transient scopes.
	* sem_res.adb (Resolve_Actuals): Likewise.
	(Resolve_Call): Adjust comment on the strategy for transient scopes.
</pre>
</div>
</content>
</entry>
<entry>
<title>ada: Avoid incorrect errors for duplicate formal iterator names</title>
<updated>2025-11-21T08:29:36+00:00</updated>
<author>
<name>Bob Duff</name>
<email>duff@adacore.com</email>
</author>
<published>2025-11-10T18:21:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=f9ee1322a8297e2391e24b52f9f19028142e0b92'/>
<id>f9ee1322a8297e2391e24b52f9f19028142e0b92</id>
<content type='text'>
This patch fixes the following bug: If a type has an Iterable aspect
(as in the formal containers), and two or more cursor loops of the
form "for C in ..."  occur in the same scope, and the cursor type has
discriminants without defaults, the compiler complains incorrectly
about duplicate names "Tc".

This is because the generated declaration of the C object was being
analyzed in the wrong scope. In the discriminated case, an internal
subtype name TcS is generated for each C. Errout "helpfully" removes "S"
in the error message, resulting in a complaint about "Tc".  The fix is
to push the correct scope (that of the generated surrounding block
statement) when analyzing the declaration of C.

gcc/ada/ChangeLog:

	* exp_ch5.adb (Expand_Formal_Container_Loop):
	Analyze Init_Decl in the correct scope. Remove patch-up
	code that was needed because we were using the wrong scope.
	* exp_ch7.adb (Process_Object_Declaration):
	Remove code to unique-ify the name of Master_Node_Id;
	no longer needed because of change to exp_ch5.adb.
	* sem_warn.adb (Check_References):
	Suppress warnings during preanalysis, because we don't
	have complete information yet; otherwise, the new Preanalyze
	call in exp_ch5.adb generates bogus warnings.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch fixes the following bug: If a type has an Iterable aspect
(as in the formal containers), and two or more cursor loops of the
form "for C in ..."  occur in the same scope, and the cursor type has
discriminants without defaults, the compiler complains incorrectly
about duplicate names "Tc".

This is because the generated declaration of the C object was being
analyzed in the wrong scope. In the discriminated case, an internal
subtype name TcS is generated for each C. Errout "helpfully" removes "S"
in the error message, resulting in a complaint about "Tc".  The fix is
to push the correct scope (that of the generated surrounding block
statement) when analyzing the declaration of C.

gcc/ada/ChangeLog:

	* exp_ch5.adb (Expand_Formal_Container_Loop):
	Analyze Init_Decl in the correct scope. Remove patch-up
	code that was needed because we were using the wrong scope.
	* exp_ch7.adb (Process_Object_Declaration):
	Remove code to unique-ify the name of Master_Node_Id;
	no longer needed because of change to exp_ch5.adb.
	* sem_warn.adb (Check_References):
	Suppress warnings during preanalysis, because we don't
	have complete information yet; otherwise, the new Preanalyze
	call in exp_ch5.adb generates bogus warnings.
</pre>
</div>
</content>
</entry>
</feed>
