You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@stdcxx.apache.org by "Martin Sebor (JIRA)" <ji...@apache.org> on 2008/03/26 01:41:26 UTC
[jira] Issue Comment Edited: (STDCXX-624) [gcc/Linux]
std::numeric_limits::traps = false when integer arithmetic traps
[ https://issues.apache.org/jira/browse/STDCXX-624?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12582090#action_12582090 ]
sebor edited comment on STDCXX-624 at 3/25/08 5:41 PM:
--------------------------------------------------------------
I can't reproduce this with gcc/Linux, either on AMD64 or EM64T (tried Fedora 8 and SuSE 9). I've added a regression test in [r641091|http://svn.apache.org/viewvc?rev=641091&view=rev] to see if there are any platforms or configurations where this still an issue.
was (Author: sebor):
I can't reproduce this with gcc/Linux, either on AND64 or EM64T (tried Fedora 8 and SuSE 9). I've added a regression test in [r641091|http://svn.apache.org/viewvc?rev=641091&view=rev] to see if there are any platforms or configurations where this still an issue.
> [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
> Time Spent: 2h
> Remaining Estimate: 2h
>
> 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|http://svn.apache.org/repos/asf/stdcxx/trunk/examples/manual/limits.cpp] produces a {{DIFF}} result in some builds).
> {code}
> $ 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
> {code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.