[
https://issues.apache.org/jira/browse/STDCXX-624?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Martin Sebor updated STDCXX-624:
--------------------------------
Remaining Estimate: 4h
Original Estimate: 4h
> [gcc/Linux] std::numeric_limits<int>traps = false when integer arithmetic
> traps
> -------------------------------------------------------------------------------
>
> Key: STDCXX-624
> URL: https://issues.apache.org/jira/browse/STDCXX-624
> Project: C++ Standard Library
> Issue Type: Bug
> Components: 18. Language Support
> Affects Versions: 4.2.0
> Environment: gcc 4.1.0 on SUSE Linux Enterprise Server 10 (x86_64)
> Reporter: Martin Sebor
> Assignee: Martin Sebor
> Priority: Trivial
> Fix For: 4.2.1
>
> Original Estimate: 4h
> Remaining Estimate: 4h
>
> As an extension, stdcxx defines the value of std::numeric_limits<T>::traps
> for integer T to be true when there exists an arithmetic operation on type T
> that traps for some value of T. Based on this definition the program below
> should always run successfully to completion but when compiled with gcc 4.1.0
> with optimization enabled on SUSE Linux Enterprise Server 10 (x86_64) it
> aborts at runtime. (This is also why the example program limits.cpp produces
> a DIFF result in some builds).
> $ cat t.cpp && make t && ./t
> #include <cassert>
> #include <cstdio>
> #include <cstdlib>
> #include <limits>
> char digits[] = " +0.?23456789e+01";
> int main ()
> {
> digits [4] = '0';
> const int zero = (int)std::strtod (digits, 0);
> digits [4] = '1';
> const int x = (int)std::strtod (digits, 0);
> if (!std::numeric_limits<int>::traps) {
> const int div = x / zero;
> const int mod = x % zero;
> std::printf ("%d, %d\n", div, mod);
> }
> }
> gcc -c -I/amd/devco/sebor/stdcxx-4.2.x/include/ansi -pthread
> -I/amd/devco/sebor/stdcxx-4.2.x/include
> -I/build/sebor/stdcxx-4.2.x-gcc-4.1.0-12D/include
> -I/amd/devco/sebor/stdcxx-4.2.x/examples/include -pedantic -nostdinc++ -O2
> -W -Wall -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long
> -Wcast-align t.cpp
> gcc t.o -o t -pthread -L/build/sebor/stdcxx-4.2.x-gcc-4.1.0-12D/lib
> -Wl,-R/build/sebor/stdcxx-4.2.x-gcc-4.1.0-12D/lib -lstd12D -lsupc++ -lm
> Floating point exception
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.