First Last Prev Next    No search results available      Search page      Enter new bug
Bug#: 11618
Product:  
Component:  
Status: RESOLVED
Resolution: FIXED
Assigned To: Not yet assigned to anyone <unassigned@gcc.gnu.org>
Host:
Reported against  
Priority:  
Severity:  
Target Milestone:  
 
 
Target:
Reporter: George T. Talbot <gtalbot@locuspharma.com>
Add CC:
CC:
Remove selected CCs
Build:
URL:
Summary:
Keywords:
Known to work:
Known to fail:

Attachment Description Type Created Size Actions
bug.cc Small test case using the BOOST library. text/plain 2003-07-21 17:12 542 bytes Edit
bug.ii.gz The .ii file, which might be more useful. application/x-gzip 2003-07-21 17:14 117.75 KB Edit
Create a New Attachment (proposed patch, testcase, etc.) View All

Bug 11618 depends on: Show dependency tree
Show dependency graph
Bug 11618 blocks:

Additional Comments:






View Bug Activity   |   Format For Printing   |   Clone This Bug


Description:   Last confirmed: Opened: 2003-07-21 17:11
I'm attaching a test file, plus the .ii file, which demonstrates a case where
at
-O3, the compiler generates code that doesn't properly initialize floating
point
values in a user-defined copy constructor.

------- Comment #1 From George T. Talbot 2003-07-21 17:12 -------
Created an attachment (id=4445) [edit]
Small test case using the BOOST library.

This is the C++ test case that I used to find the problem.

------- Comment #2 From George T. Talbot 2003-07-21 17:14 -------
Created an attachment (id=4446) [edit]
The .ii file, which might be more useful.

This is the .ii file from compiling the above file at -O3.

------- Comment #3 From Andrew Pinski 2003-07-21 17:28 -------
From bug 323 (of which this is a dup of):
See any faq on numerical analysis that mentions the x86.
     You are seeing the results of excess precision in the FPU.
     Either change the rounding precision in the FPCR, or work
     around the problem with -ffloat-store.

*** This bug has been marked as a duplicate of 323 ***

------- Comment #4 From George T. Talbot 2003-07-21 17:34 -------
This is not a rounding issue.  The floating point values are not getting
copied.
 There are no math operations that occur here.

------- Comment #5 From George T. Talbot 2003-07-21 17:37 -------
I just tested this with -ffloat-store and the program still fails to produce
the
correct result.

------- Comment #6 From George T. Talbot 2003-07-21 17:39 -------
Also, if you edit bug.cc to print out q before z is initialized, then z will be
initialized correctly.

------- Comment #7 From Andrew Pinski 2003-07-21 17:42 -------
One you are using a prerelease of 3.2 from redhat (report it to them).
Second I cannot reproduce it on 3.2.3, 3.2.2 or 3.3.1 (20030707) (so update your compiler):
(3_2 = 3.2.3, 3_3 = 3.3.1)

tin:~/src/gnu/gcctest/pr11618>~/ia32_linux_gcc3_3/bin/g++ -O3 pr11618.ii
tin:~/src/gnu/gcctest/pr11618>./a.out 
R1=-0.317785 R2=0.347851 R3=-0.0181945 R4=0.881862
tin:~/src/gnu/gcctest/pr11618>~/ia32_linux_gcc3_3/bin/g++  pr11618.ii
tin:~/src/gnu/gcctest/pr11618>./a.out 
R1=-0.317785 R2=0.347851 R3=-0.0181945 R4=0.881862
tin:~/src/gnu/gcctest/pr11618>~/ia32_linux_gcc3_2/bin/g++ pr11618.ii
tin:~/src/gnu/gcctest/pr11618>./a.out 
R1=-0.317785 R2=0.347851 R3=-0.0181945 R4=0.881862
tin:~/src/gnu/gcctest/pr11618>~/ia32_linux_gcc3_2/bin/g++ pr11618.ii -O3
tin:~/src/gnu/gcctest/pr11618>./a.out 
R1=-0.317785 R2=0.347851 R3=-0.0181945 R4=0.881862
tin:~/src/gnu/gcctest/pr11618>~/ia32_linux_gcc3_2_2/bin/g++ pr11618.ii -O3
tin:~/src/gnu/gcctest/pr11618>./a.out 
R1=-0.317785 R2=0.347851 R3=-0.0181945 R4=0.881862

------- Comment #8 From CVS Commits 2005-02-22 03:13 -------
Subject: Bug 11618

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	bryce@gcc.gnu.org	2005-02-22 03:13:35

Modified files:
	libjava        : ChangeLog 
	libjava/gcj    : method.h 
	libjava/java/io: ObjectInputStream.java ObjectStreamField.java 
	                 VMObjectStreamClass.java 
	                 natObjectInputStream.cc 
	                 natVMObjectStreamClass.cc 
	                 ObjectOutputStream.java 
	libjava/java/lang/reflect: Field.java natField.cc 

Log message:
	2005-02-21  Bryce McKinlay  <mckinlay@redhat.com>
	
	Merge serialization from GNU Classpath.
	* gcj/method.h: Add missing #includes.
	* java/io/ObjectInputStream.java (readClassDescriptor): Check for
	primitive class IDs on the stream here...
	(resolveClass): ...not here.
	* java/io/ObjectStreamField.java: Use VMObjectStream class calls to set
	fields.
	* java/io/VMObjectStreamClass.java (setDoubleNative, setFloatNative,
	setLongNative, setIntNative, setShortNative, setCharNative,
	setByteNative, setBooleanNative, setObjectNative): New native methods.
	* java/io/natVMObjectStreamClass.java (setDoubleNative, setFloatNative,
	setLongNative, setIntNative, setShortNative, setCharNative,
	setByteNative, setBooleanNative, setObjectNative): Implement them.
	* java/io/natObjectInputStream.cc (allocateObject): Add new parameters
	from Classpath's version. Use _Jv_FromReflectedConstructor(). Call
	the constructor here.
	(callConstructor): Removed.
	(getCallersClassLoader): Removed.
	* java/lang/reflect/Field.java (setByte, setShort, setInt, setLong,
	setFloat, setDouble, setChar, setBoolean): Add 'checkFinal' parameter
	to control whether setting final field values is permitted. Call
	getAddr() with checkFinal parameter instead of setAddr().
	* java/lang/reflect/natField.cc (getType): Lookup and resolve field
	only if not done already.
	(getAddr): Add checkFinal parameter. Do the final field check only if
	checkFinal is set.
	(setAddr): Removed.
	
	2005-02-21  Mark Wielaard  <mark@klomp.org>
	
	# Fixes bug #11957
	* java/io/ObjectInputStream.java (resolveClass): Don't check "void"
	twice.
	
	2005-02-21  Mark Wielaard  <mark@klomp.org>
	
	Fixes bug #11618.
	* java/io/ObjectInputStream.java (readClassDescriptor): Handle classes
	without a super class and us ObjectStreamClass.lookupForClassObject().
	(resolveClass): Check for primitive types.
	(lookupClass): Return null when argument is null.
	
	2005-02-21  Jeroen Frijters  <jeroen@frijters.net>
	
	* java/io/ObjectInputStream.java
	(readObject): Fix to consume TC_ENDBLOCKDATA after readExternal.
	
	2005-02-21  Jeroen Frijters  <jeroen@frijters.net>
	
	* java/io/ObjectOutputStream.java
	(writeObject, callWriteMethod): Replaced reflection with accessing
	cached info in ObjectStreamClass.
	(getMethod): Removed.
	* java/io/ObjectStreamClass.java
	(findMethod): Added check to make sure the method found has the
	right modifiers.
	(cacheMethods): Added writeReplace and writeObject methods.
	(setFlags): Look at new writeObjectMethod field instead of doing
	reflection again.
	(writeReplaceMethod): New field.
	(writeObjectMethod): New field.
	
	2005-02-21  Guilhem Lavaux  <guilhem@kaffe.org>
	Jeroen Frijters  <jeroen@frijters.net>
	
	* java/io/ObjectInputStream.java
	(newObject): Changed prototype. Get a constructor reflect object
	directly.
	(callConstructor): Removed.
	(allocateObject): Changed prototype.
	(readClassDescriptor): Build the constructor reflection directly.
	(readObject): Invoke newObject using the new prototype.
	
	* java/io/ObjectStreamClass.java
	(firstNonSerializableParent): Removed.
	(firstNonSerializableParentConstructor): Added.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libjava/ChangeLog.diff?cvsroot=gcc&r1=1.3371&r2=1.3372
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libjava/gcj/method.h.diff?cvsroot=gcc&r1=1.6&r2=1.7
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libjava/java/io/ObjectInputStream.java.diff?cvsroot=gcc&r1=1.40&r2=1.41
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libjava/java/io/ObjectStreamField.java.diff?cvsroot=gcc&r1=1.12&r2=1.13
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libjava/java/io/VMObjectStreamClass.java.diff?cvsroot=gcc&r1=1.1&r2=1.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libjava/java/io/natObjectInputStream.cc.diff?cvsroot=gcc&r1=1.8&r2=1.9
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libjava/java/io/natVMObjectStreamClass.cc.diff?cvsroot=gcc&r1=1.1&r2=1.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libjava/java/io/ObjectOutputStream.java.diff?cvsroot=gcc&r1=1.31&r2=1.32
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libjava/java/lang/reflect/Field.java.diff?cvsroot=gcc&r1=1.9&r2=1.10
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libjava/java/lang/reflect/natField.cc.diff?cvsroot=gcc&r1=1.16&r2=1.17


First Last Prev Next    No search results available      Search page      Enter new bug