Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 57480

Summary: floating point exception - g++ 2.96-98
Product: [Retired] Red Hat Linux Reporter: Dan Maas <dmaas>
Component: gccAssignee: 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:

Description Dan Maas 2001-12-13 18:46:40 UTC
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);
}

Comment 1 Richard Henderson 2004-10-02 01:05:04 UTC
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.