Additionally set f32 mode with denormal-fp-math
authorDavid Candler <david.candler@arm.com>
Fri, 29 Apr 2022 14:06:12 +0000 (15:06 +0100)
committerDavid Candler <david.candler@arm.com>
Fri, 29 Apr 2022 14:06:32 +0000 (15:06 +0100)
commit9e7c9967c3fd573ef53b145e24e6a1e6ba930c82
treeb4851268a30b1675261ef25a5448f06714e2d002
parent205246cb64358aa6f03b54d47d73708122d76bbf
Additionally set f32 mode with denormal-fp-math

When the denormal-fp-math option is used, this should set the
denormal handling mode for all floating point types. However,
currently 32-bit float types can ignore this setting as there is a
variant of the option, denormal-fp-math-f32, specifically for that type
which takes priority when checking the mode based on type and remains
at the default of IEEE. From the description, denormal-fp-math would
be expected to set the mode for floats unless overridden by the f32
variant, and code in the front end only emits the f32 option if it is
different to the general one, so setting just denormal-fp-math should
be valid.

This patch changes the denormal-fp-math option to also set the f32
mode. If denormal-fp-math-f32 is also specified, this is then
overridden as expected, but if it is absent floats will be set to the
mode specified by the former option, rather than remain on the default.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D122589
clang/lib/Driver/ToolChains/Clang.cpp
clang/lib/Frontend/CompilerInvocation.cpp
clang/test/CodeGen/denormalfpmode-f32.c [new file with mode: 0644]