Bug 57480
| Summary: | floating point exception - g++ 2.96-98 | ||
|---|---|---|---|
| Product: | [Retired] Red Hat Linux | Reporter: | Dan Maas <dmaas> |
| Component: | gcc | Assignee: | Jakub Jelinek <jakub> |
| Status: | CLOSED CURRENTRELEASE | QA Contact: | Brian Brock <bbrock> |
| Severity: | low | Docs Contact: | |
| Priority: | medium | ||
| Version: | 7.1 | ||
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | i386 | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2004-10-02 01:05:04 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
As of gcc 3.2, we issue the diagnostic z.c: In member function `void MyArray<T>::append(T) [with T=float[3]]': z.c:20: instantiated from here z.c:11: ISO C++ forbids assignment of arrays which is probably what we were trying to do beforehand, and got confused. |
Description of Problem: This short C++ fragment causes gcc 2.96-98 to print "Internal error: Floating point exception" when compiled with -O2 (no FPE with -O0). (yes, I know this code won't work correctly even if it did compile...) I've seen other floating point exception bugs in Bugzilla, but they were all for earlier versions of gcc, and marked CLOSED. Steps to Reproduce: 1. g++ bugcase.cpp -c -O2 // bugcase.cpp template<class T> class MyArray { public: T* p; int nused; void append(T foo) { p[nused++] = foo; } }; typedef float v3_t[3]; void test(v3_t v) { MyArray<v3_t> a; a.append(v); }