[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1059340: libstdc++6:riscv64: stream output for NaN is optimization-dependent



Package: libstdc++6
Version: 13.2.0-9

Streaming a negative NaN float produces "-nan" with g++ -O0 and "nan"
with g++ -O1 or above:

	$ cat >mwe.cc <<EOF
	> // Copyright 2023 Google LLC
	> // SPDX-License-Identifier: Apache-2.0
	> 
	> #include <bit>
	> #include <iostream>
	> 
	> int main() { std::cerr << std::bit_cast<float>(0xfff80000) << '\n'; }
	> EOF
	$ g++ -std=c++20 -O0 mwe.cc && ./a.out
	nan
	$ g++ -std=c++20 -O1 mwe.cc && ./a.out
	-nan
	$ clang++ -std=c++20 -O0 mwe.cc && ./a.out
	nan
	$ clang++ -std=c++20 -O1 mwe.cc && ./a.out
	-nan

For comparison, on amd64, this program always produces "-nan",
regardless of optimization level.

Tested with g++-13 13.2.0-9 and clang-16 1:16.0.6-19.


Reply to: