<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gcc.git, branch devel/sphinx</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>Merge branch 'master' into devel/sphinx</title>
<updated>2022-11-08T11:36:43+00:00</updated>
<author>
<name>Martin Liska</name>
<email>mliska@suse.cz</email>
</author>
<published>2022-11-08T11:36:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=4b13c73bba935443be3207abf26f7ba05f79badc'/>
<id>4b13c73bba935443be3207abf26f7ba05f79badc</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>i386: Improve vector [GL]E{,U} comparison against vector constants [PR107546]</title>
<updated>2022-11-08T11:21:55+00:00</updated>
<author>
<name>Jakub Jelinek</name>
<email>jakub@redhat.com</email>
</author>
<published>2022-11-08T11:21:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=fa271afb58423014e2feef9f15c1a87428e64ddc'/>
<id>fa271afb58423014e2feef9f15c1a87428e64ddc</id>
<content type='text'>
For integer vector comparisons without XOP before AVX512{F,VL} we are
constrained by only GT and EQ being supported in HW.
For GTU we play tricks to implement it using GT or unsigned saturating
subtraction, for LT/LTU we swap the operands and thus turn it into
GT/GTU.  For LE/LEU we handle it by using GT/GTU and negating the
result and for GE/GEU by using GT/GTU on swapped operands and negating
the result.
If the second operand is a CONST_VECTOR, we can usually do better though,
we can avoid the negation.  For LE/LEU cst by doing LT/LTU cst+1 (and
then cst+1 GT/GTU x) and for GE/GEU cst by doing GT/GTU cst-1, provided
there is no wrap-around on those cst+1 or cst-1.
GIMPLE canonicalizes x &lt; cst to x &lt;= cst-1 etc. (the rule is smaller
absolute value on constant), but only for scalars or uniform vectors,
so in some cases this undoes that canonicalization in order to avoid
the extra negation, but it handles also non-uniform constants.
E.g. with -mavx2 the testcase assembly difference is:
-       movl    $47, %eax
+       movl    $48, %eax
        vmovdqa %xmm0, %xmm1
        vmovd   %eax, %xmm0
        vpbroadcastb    %xmm0, %xmm0
-       vpminsb %xmm0, %xmm1, %xmm0
-       vpcmpeqb        %xmm1, %xmm0, %xmm0
+       vpcmpgtb        %xmm1, %xmm0, %xmm0
and
-       vmovdqa %xmm0, %xmm1
-       vmovdqa .LC1(%rip), %xmm0
-       vpminsb %xmm1, %xmm0, %xmm1
-       vpcmpeqb        %xmm1, %xmm0, %xmm0
+       vpcmpgtb        .LC1(%rip), %xmm0, %xmm0
while with just SSE2:
-       pcmpgtb .LC0(%rip), %xmm0
-       pxor    %xmm1, %xmm1
-       pcmpeqb %xmm1, %xmm0
+       movdqa  %xmm0, %xmm1
+       movdqa  .LC0(%rip), %xmm0
+       pcmpgtb %xmm1, %xmm0
and
-       movdqa  %xmm0, %xmm1
-       movdqa  .LC1(%rip), %xmm0
-       pcmpgtb %xmm1, %xmm0
-       pxor    %xmm1, %xmm1
-       pcmpeqb %xmm1, %xmm0
+       pcmpgtb .LC1(%rip), %xmm0

2022-11-08  Jakub Jelinek  &lt;jakub@redhat.com&gt;

	PR target/107546
	* config/i386/predicates.md (vector_or_const_vector_operand): New
	predicate.
	* config/i386/sse.md (vec_cmp&lt;mode&gt;&lt;sseintvecmodelower&gt;,
	vec_cmpv2div2di, vec_cmpu&lt;mode&gt;&lt;sseintvecmodelower&gt;,
	vec_cmpuv2div2di): Use nonimmediate_or_const_vector_operand
	predicate instead of nonimmediate_operand and
	vector_or_const_vector_operand instead of vector_operand.
	* config/i386/i386-expand.cc (ix86_expand_int_sse_cmp): For
	LE/LEU or GE/GEU with CONST_VECTOR cop1 try to transform those
	into LE/LEU or GT/GTU with larger or smaller by one cop1 if
	there is no wrap-around.  Force CONST_VECTOR cop0 or cop1 into
	REG.  Formatting fix.

	* gcc.target/i386/pr107546.c: New test.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For integer vector comparisons without XOP before AVX512{F,VL} we are
constrained by only GT and EQ being supported in HW.
For GTU we play tricks to implement it using GT or unsigned saturating
subtraction, for LT/LTU we swap the operands and thus turn it into
GT/GTU.  For LE/LEU we handle it by using GT/GTU and negating the
result and for GE/GEU by using GT/GTU on swapped operands and negating
the result.
If the second operand is a CONST_VECTOR, we can usually do better though,
we can avoid the negation.  For LE/LEU cst by doing LT/LTU cst+1 (and
then cst+1 GT/GTU x) and for GE/GEU cst by doing GT/GTU cst-1, provided
there is no wrap-around on those cst+1 or cst-1.
GIMPLE canonicalizes x &lt; cst to x &lt;= cst-1 etc. (the rule is smaller
absolute value on constant), but only for scalars or uniform vectors,
so in some cases this undoes that canonicalization in order to avoid
the extra negation, but it handles also non-uniform constants.
E.g. with -mavx2 the testcase assembly difference is:
-       movl    $47, %eax
+       movl    $48, %eax
        vmovdqa %xmm0, %xmm1
        vmovd   %eax, %xmm0
        vpbroadcastb    %xmm0, %xmm0
-       vpminsb %xmm0, %xmm1, %xmm0
-       vpcmpeqb        %xmm1, %xmm0, %xmm0
+       vpcmpgtb        %xmm1, %xmm0, %xmm0
and
-       vmovdqa %xmm0, %xmm1
-       vmovdqa .LC1(%rip), %xmm0
-       vpminsb %xmm1, %xmm0, %xmm1
-       vpcmpeqb        %xmm1, %xmm0, %xmm0
+       vpcmpgtb        .LC1(%rip), %xmm0, %xmm0
while with just SSE2:
-       pcmpgtb .LC0(%rip), %xmm0
-       pxor    %xmm1, %xmm1
-       pcmpeqb %xmm1, %xmm0
+       movdqa  %xmm0, %xmm1
+       movdqa  .LC0(%rip), %xmm0
+       pcmpgtb %xmm1, %xmm0
and
-       movdqa  %xmm0, %xmm1
-       movdqa  .LC1(%rip), %xmm0
-       pcmpgtb %xmm1, %xmm0
-       pxor    %xmm1, %xmm1
-       pcmpeqb %xmm1, %xmm0
+       pcmpgtb .LC1(%rip), %xmm0

2022-11-08  Jakub Jelinek  &lt;jakub@redhat.com&gt;

	PR target/107546
	* config/i386/predicates.md (vector_or_const_vector_operand): New
	predicate.
	* config/i386/sse.md (vec_cmp&lt;mode&gt;&lt;sseintvecmodelower&gt;,
	vec_cmpv2div2di, vec_cmpu&lt;mode&gt;&lt;sseintvecmodelower&gt;,
	vec_cmpuv2div2di): Use nonimmediate_or_const_vector_operand
	predicate instead of nonimmediate_operand and
	vector_or_const_vector_operand instead of vector_operand.
	* config/i386/i386-expand.cc (ix86_expand_int_sse_cmp): For
	LE/LEU or GE/GEU with CONST_VECTOR cop1 try to transform those
	into LE/LEU or GT/GTU with larger or smaller by one cop1 if
	there is no wrap-around.  Force CONST_VECTOR cop0 or cop1 into
	REG.  Formatting fix.

	* gcc.target/i386/pr107546.c: New test.
</pre>
</div>
</content>
</entry>
<entry>
<title>libstdc++: Uncomment denorm_min test</title>
<updated>2022-11-08T10:19:25+00:00</updated>
<author>
<name>Jakub Jelinek</name>
<email>jakub@redhat.com</email>
</author>
<published>2022-11-08T10:19:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=ee86bdd1d367bc174d7b50bd2ffa5622c4766322'/>
<id>ee86bdd1d367bc174d7b50bd2ffa5622c4766322</id>
<content type='text'>
As r13-3609-g6d9dbdf51f9afe8 has been committed, we can now enable
even the denorm_min test.

2022-11-08  Jakub Jelinek  &lt;jakub@redhat.com&gt;

	* testsuite/20_util/to_chars/float128_c++23.cc (test): Uncomment
	denorm_min test.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
As r13-3609-g6d9dbdf51f9afe8 has been committed, we can now enable
even the denorm_min test.

2022-11-08  Jakub Jelinek  &lt;jakub@redhat.com&gt;

	* testsuite/20_util/to_chars/float128_c++23.cc (test): Uncomment
	denorm_min test.
</pre>
</div>
</content>
</entry>
<entry>
<title>gcc: fix PR rtl-optimization/107482</title>
<updated>2022-11-08T09:29:56+00:00</updated>
<author>
<name>Max Filippov</name>
<email>jcmvbkbc@gmail.com</email>
</author>
<published>2022-11-07T21:58:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=e581490f0cfa80c58d2b648d71a44a597fbe3008'/>
<id>e581490f0cfa80c58d2b648d71a44a597fbe3008</id>
<content type='text'>
gcc/
	PR rtl-optimization/107482
	* ira-color.cc (assign_hard_reg): Only call
	update_costs_from_copies when retry_p is false.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
gcc/
	PR rtl-optimization/107482
	* ira-color.cc (assign_hard_reg): Only call
	update_costs_from_copies when retry_p is false.
</pre>
</div>
</content>
</entry>
<entry>
<title>ada: Fix oversight in implementation of allocators for storage models</title>
<updated>2022-11-08T08:35:03+00:00</updated>
<author>
<name>Eric Botcazou</name>
<email>ebotcazou@adacore.com</email>
</author>
<published>2022-10-18T09:32:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=b2278f6b146595b3f80a072145a78877041cb8bc'/>
<id>b2278f6b146595b3f80a072145a78877041cb8bc</id>
<content type='text'>
When the allocator is of an unconstrained array type and has an initializing
expression, the copy of the initializing expression must be done separately
from that of the bounds.

gcc/ada/

	* gcc-interface/utils2.cc (build_allocator): For unconstrained
	array types with a storage model and an initializing expression,
	copy the initialization expression separately from the bounds. In
	all cases with a storage model, pass the locally computed size for
	the store.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When the allocator is of an unconstrained array type and has an initializing
expression, the copy of the initializing expression must be done separately
from that of the bounds.

gcc/ada/

	* gcc-interface/utils2.cc (build_allocator): For unconstrained
	array types with a storage model and an initializing expression,
	copy the initialization expression separately from the bounds. In
	all cases with a storage model, pass the locally computed size for
	the store.
</pre>
</div>
</content>
</entry>
<entry>
<title>ada: Compile-time simplification of 'Image incorrectly ignores Put_Image</title>
<updated>2022-11-08T08:35:03+00:00</updated>
<author>
<name>Steve Baird</name>
<email>baird@adacore.com</email>
</author>
<published>2022-10-25T23:59:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=10f193eb043e30741d9631999bc869d71d43264c'/>
<id>10f193eb043e30741d9631999bc869d71d43264c</id>
<content type='text'>
In the case of Some_Enumeration_Type'Image (&lt;some static value&gt;),
the compiler will replace this expression in its internal program
representation with a corresponding string literal. This is incorrect
if the Put_Image aspect has been specified (directly or via inheritance)
for the enumeration type.

gcc/ada/

	* sem_attr.adb
	(Eval_Attribute): Don't simplify 'Image call if Put_Image has been
	specified.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In the case of Some_Enumeration_Type'Image (&lt;some static value&gt;),
the compiler will replace this expression in its internal program
representation with a corresponding string literal. This is incorrect
if the Put_Image aspect has been specified (directly or via inheritance)
for the enumeration type.

gcc/ada/

	* sem_attr.adb
	(Eval_Attribute): Don't simplify 'Image call if Put_Image has been
	specified.
</pre>
</div>
</content>
</entry>
<entry>
<title>ada: Clean up call to check if aspects are present</title>
<updated>2022-11-08T08:35:03+00:00</updated>
<author>
<name>Piotr Trojanek</name>
<email>trojanek@adacore.com</email>
</author>
<published>2022-10-26T07:58:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=11f892571c7ab4964f16c0d432e6f5a9b4a091f1'/>
<id>11f892571c7ab4964f16c0d432e6f5a9b4a091f1</id>
<content type='text'>
Code cleanup; semantics is unaffected.

gcc/ada/

	* exp_ch6.adb, exp_put_image.adb, sem_aggr.adb, sem_attr.adb,
	sem_ch5.adb, sem_type.adb, sem_util.adb: Replace
	"Present (Find_Aspect (...))" with "Has_Aspect".
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Code cleanup; semantics is unaffected.

gcc/ada/

	* exp_ch6.adb, exp_put_image.adb, sem_aggr.adb, sem_attr.adb,
	sem_ch5.adb, sem_type.adb, sem_util.adb: Replace
	"Present (Find_Aspect (...))" with "Has_Aspect".
</pre>
</div>
</content>
</entry>
<entry>
<title>ada: Adjust classwide contract expression preanalysis</title>
<updated>2022-11-08T08:35:02+00:00</updated>
<author>
<name>Ronan Desplanques</name>
<email>desplanques@adacore.com</email>
</author>
<published>2022-10-24T09:50:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=45656a992eb18bfefe2e6e20d3b425afe945af28'/>
<id>45656a992eb18bfefe2e6e20d3b425afe945af28</id>
<content type='text'>
Before this patch, a classwide contract expression was preanalyzed
only when its primitive operation's type was frozen. It caused name
resolution to be off in the cases where the freezing took place
after the end of the declaration list the primitive operation was
declared in.

This patch makes it so that if the compiler gets to the end of
the declaration list before the type is frozen, it preanalyzes the
classwide contract expression, so that the names are resolved in the
right context.

gcc/ada/

	* contracts.adb
	(Preanalyze_Class_Conditions): New procedure.
	(Preanalyze_Condition): Moved out from Merge_Class_Conditions in
	order to be spec-visible.
	* contracts.ads
	(Preanalyze_Class_Conditions): New procedure.
	* sem_prag.adb
	(Analyze_Pre_Post_Condition_In_Decl_Part): Call
	Preanalyze_Class_Conditions when necessary.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Before this patch, a classwide contract expression was preanalyzed
only when its primitive operation's type was frozen. It caused name
resolution to be off in the cases where the freezing took place
after the end of the declaration list the primitive operation was
declared in.

This patch makes it so that if the compiler gets to the end of
the declaration list before the type is frozen, it preanalyzes the
classwide contract expression, so that the names are resolved in the
right context.

gcc/ada/

	* contracts.adb
	(Preanalyze_Class_Conditions): New procedure.
	(Preanalyze_Condition): Moved out from Merge_Class_Conditions in
	order to be spec-visible.
	* contracts.ads
	(Preanalyze_Class_Conditions): New procedure.
	* sem_prag.adb
	(Analyze_Pre_Post_Condition_In_Decl_Part): Call
	Preanalyze_Class_Conditions when necessary.
</pre>
</div>
</content>
</entry>
<entry>
<title>ada: Set Support_Atomic_Primitives for VxWorks 7 runtimes</title>
<updated>2022-11-08T08:35:02+00:00</updated>
<author>
<name>Johannes Kliemann</name>
<email>kliemann@adacore.com</email>
</author>
<published>2022-10-21T13:21:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=48e2e5b4c2f56b9e3497d57d0974c66604e087a6'/>
<id>48e2e5b4c2f56b9e3497d57d0974c66604e087a6</id>
<content type='text'>
gcc/ada/

	* libgnat/system-vxworks7-aarch64-rtp-smp.ads: Set
	Support_Atomic_Primitives to True.
	* libgnat/system-vxworks7-aarch64.ads: Set
	Support_Atomic_Primitives to True.
	* libgnat/system-vxworks7-arm-rtp-smp.ads: Set
	Support_Atomic_Primitives to True.
	* libgnat/system-vxworks7-arm.ads: Set Support_Atomic_Primitives
	to True.
	* libgnat/system-vxworks7-ppc-kernel.ads: Set
	Support_Atomic_Primitives to False.
	* libgnat/system-vxworks7-ppc-rtp-smp.ads: Set
	Support_Atomic_Primitives to False.
	* libgnat/system-vxworks7-ppc64-kernel.ads: Set
	Support_Atomic_Primitives to True.
	* libgnat/system-vxworks7-ppc64-rtp-smp.ads: Set
	Support_Atomic_Primitives to True.
	* libgnat/system-vxworks7-x86-kernel.ads: Set
	Support_Atomic_Primitives to True.
	* libgnat/system-vxworks7-x86-rtp-smp.ads: Set
	Support_Atomic_Primitives to True.
	* libgnat/system-vxworks7-x86_64-kernel.ads: Set
	Support_Atomic_Primitives to True.
	* libgnat/system-vxworks7-x86_64-rtp-smp.ads: Set
	Support_Atomic_Primitives to True.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
gcc/ada/

	* libgnat/system-vxworks7-aarch64-rtp-smp.ads: Set
	Support_Atomic_Primitives to True.
	* libgnat/system-vxworks7-aarch64.ads: Set
	Support_Atomic_Primitives to True.
	* libgnat/system-vxworks7-arm-rtp-smp.ads: Set
	Support_Atomic_Primitives to True.
	* libgnat/system-vxworks7-arm.ads: Set Support_Atomic_Primitives
	to True.
	* libgnat/system-vxworks7-ppc-kernel.ads: Set
	Support_Atomic_Primitives to False.
	* libgnat/system-vxworks7-ppc-rtp-smp.ads: Set
	Support_Atomic_Primitives to False.
	* libgnat/system-vxworks7-ppc64-kernel.ads: Set
	Support_Atomic_Primitives to True.
	* libgnat/system-vxworks7-ppc64-rtp-smp.ads: Set
	Support_Atomic_Primitives to True.
	* libgnat/system-vxworks7-x86-kernel.ads: Set
	Support_Atomic_Primitives to True.
	* libgnat/system-vxworks7-x86-rtp-smp.ads: Set
	Support_Atomic_Primitives to True.
	* libgnat/system-vxworks7-x86_64-kernel.ads: Set
	Support_Atomic_Primitives to True.
	* libgnat/system-vxworks7-x86_64-rtp-smp.ads: Set
	Support_Atomic_Primitives to True.
</pre>
</div>
</content>
</entry>
<entry>
<title>ada: Small consistency fix</title>
<updated>2022-11-08T08:35:02+00:00</updated>
<author>
<name>Eric Botcazou</name>
<email>ebotcazou@adacore.com</email>
</author>
<published>2022-10-22T10:48:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=0ed20c72aa044c3fa4a20fad77218114c7310f52'/>
<id>0ed20c72aa044c3fa4a20fad77218114c7310f52</id>
<content type='text'>
gcc/ada/

	* fe.h (Get_Warn_On_Questionable_Layout): Add void parameter.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
gcc/ada/

	* fe.h (Get_Warn_On_Questionable_Layout): Add void parameter.
</pre>
</div>
</content>
</entry>
</feed>
