Re: [PATCH 1/7] alpha: honor -frounding-math by selecting dynamic rounding

Sam James <[email protected]>
Newsgroups gmane.comp.gcc.patches
Organization Gentoo
Message-ID <[email protected]>
Jeffrey Law <[email protected]> writes:

> On 8/14/2026 1:29 PM, Matt Turner wrote:
>> Alpha encodes the rounding mode in the instruction itself, so honoring a
>> rounding mode chosen at run time requires the /d qualifier, which takes the
>> mode from the FPCR.  alpha_fprm defaulted to ALPHA_FPRM_NORM and was only
>> ever changed by an explicit -mfp-rounding-mode, so -frounding-math emitted
>> statically rounded instructions and fesetround was silently ignored.
>>
>> Default alpha_fprm to ALPHA_FPRM_DYN when -frounding-math is in effect and
>> -mfp-rounding-mode was not given, leaving both ordinary code generation and
>> an explicit -mfp-rounding-mode unaffected.  The VAX floating-point
>> instructions have no dynamic rounding qualifier, so -mfloat-vax keeps the
>> static default.
>>
>> This fixes the execution failures of gcc.dg/torture/fp-uint64-convert-double-1.c,
>> fp-uint64-convert-double-2.c and fp-double-convert-float-1.c.
>>
>> gcc/ChangeLog:
>>
>> 	* config/alpha/alpha.cc (alpha_option_override): Set alpha_fprm to
>> 	ALPHA_FPRM_DYN when flag_rounding_math is set, -mfp-rounding-mode
>> 	was not given explicitly and -mfloat-vax is not in effect.
>> 	* doc/invoke.texi (Alpha Options): Document the default rounding
>> 	mode and its interaction with -frounding-math.
> THanks.  I've pushed this to the trunk as well.  My last alpha build
> didn't bootstrap, so something has gone weird, but I suspect it's
> generic and not anything you've done.
>
> The last clean build I had was with:
>
> 7e0bb48cbb2654816ce2714de5b644f4d965d3db
>
> The first failed build with:
>
> df494ca28d75f80b4d0b4e0b93b5d23d2092131a
>
> The failure mode is an ICE in the gimple threader:
> during GIMPLE pass: thread
> ../../../gcc/libcpp/lex.cc: In function 'void _cpp_clean_line(cpp_reader*)':
> ../../../gcc/libcpp/lex.cc:970:1: internal compiler error: Segmentation fault
>   970 | _cpp_clean_line (cpp_reader *pfile)
>       | ^~~~~~~~~~~~~~~
>
> I haven't tried to chase it down yet.  I usually let these things
> simmer a bit since testing/bisecting bootstraps of qemu emulated
> targets takes an absurdly long time.  But if you're interested in
> chasing another issue, this may be good to check.

It's https://gcc.gnu.org/PR126876 which Aldy just fixed but trunk is
kind of rough at the moment, there's https://gcc.gnu.org/PR126856 too.

>
> jeff

sam
signature.asc (application/pgp-signature, 418 B)
-----BEGIN PGP SIGNATURE-----

iQEBBAEWCgCpFiEEJaa7iN2bdkxrVUHCc4QJ9SDfkZAFAmqEo+gbFIAAAAAABAAO
bWFudTIsMi41KzEuMTIsMiwyXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25z
Lm9wZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQyNUE2QkI4OEREOUI3NjRDNkI1NTQx
QzI3Mzg0MDlGNTIwREY5MTkwDxxzYW1AZ2VudG9vLm9yZwAKCRBzhAn1IN+RkJ8c
APwOkupqxDxAF/P54NbaSi605PC1r2WJGCO5YQidiIBV7gD9GFKtUjL+AfDXTjko
dpCKvO5532/bcwOfMAtuqfFB9QI=
=1nWS
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.