From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14512 invoked by alias); 22 Sep 2006 09:09:25 -0000 Received: (qmail 14497 invoked by uid 22791); 22 Sep 2006 09:09:23 -0000 X-Spam-Check-By: sourceware.org Received: from smtpout.framatome-anp.com (HELO smtpout.framatome-anp.com) (193.57.156.6) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 22 Sep 2006 09:09:20 +0000 Received: from rfrehubbx03.ad.corp (unknown [10.2.33.112]) by smtpout.framatome-anp.com (Postfix) with ESMTP id 5A19A98100 for ; Fri, 22 Sep 2006 09:09:16 +0000 (UTC) Received: from egeer00bx02.edom.ad.corp ([10.200.42.31]) by rfrehubbx03.ad.corp with Microsoft SMTPSVC(6.0.3790.211); Fri, 22 Sep 2006 11:09:16 +0200 Received: from egeer00mx01.edom.ad.corp ([10.200.42.32]) by egeer00bx02.edom.ad.corp with Microsoft SMTPSVC(6.0.3790.211); Fri, 22 Sep 2006 11:09:04 +0200 Received: from [10.200.23.107] ([10.200.23.107]) by egeer00mx01.edom.ad.corp with Microsoft SMTPSVC(6.0.3790.211); Fri, 22 Sep 2006 11:09:04 +0200 Message-ID: <4513A82E.60804@areva.com> Date: Fri, 22 Sep 2006 09:09:00 -0000 From: "Richard B. Kreckel" User-Agent: Thunderbird 1.5 (X11/20051201) MIME-Version: 1.0 To: gcc-help@gcc.gnu.org Subject: floating point exception flags and compiler optimization Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="------------ms020103050803030909040909" Mailing-List: contact gcc-help-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-help-owner@gcc.gnu.org X-SW-Source: 2006-09/txt/msg00232.txt.bz2 This is a cryptographically signed message in MIME format. --------------ms020103050803030909040909 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 1056 Hi, I just tried playing with the floating point exceptions using the functionality defined in C99. However, it seems to interfere somehow with optimization. Can anyone give a hint what's going on? Here is my test program: $ cat fenv.c #include #include int main() { // disguise constants one and zero, in order to fool the compiler double x = (double)printf("") + 1.0; // one double y = (double)printf(""); // zero if (fetestexcept(FE_ALL_EXCEPT)) { printf("flag set before call.\n"); } double z = x / y; if (fetestexcept(FE_ALL_EXCEPT)) { printf("flag set after call.\n"); } printf("%f/%f==%f\n",x,y,z); } $ gcc -O0 fenv.c -lm && ./a.out flag set after call. 1.000000/0.000000==inf $ gcc -O1 fenv.c -lm && ./a.out 1.000000/0.000000==inf I also found that the behavior appears to depend on the compiler version used. gcc 3.x and 4.0 print "flat set after call." even with optimization, but the above is gcc 4.1. TIA -richy. -- Richard B. Kreckel --------------ms020103050803030909040909 Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature Content-length: 4344 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEH AQAAoIIIFDCCBAYwggLuoAMCAQICBQEAAANYMA0GCSqGSIb3DQEBBQUAMIGv MSgwJgYDVQQDEx9GcmFtYXRvbWUtQU5QIEdlcm1hbnkgQXV0aG9yaXR5MRsw GQYDVQQKExJGcmFtYXRvbWUgQU5QIEdtYkgxCzAJBgNVBAsTAm5vMQswCQYD VQQHEwJubzELMAkGA1UECBMCbm8xCzAJBgNVBAYTAkRFMTIwMAYJKoZIhvcN AQkBFiNhdXRob3JpdHkuZ2VybWFueUBmcmFtYXRvbWUtYW5wLmNvbTAeFw0w NjAzMDYxNzIxMDFaFw0wODAyMTQwNzA2NDlaMIG5MRAwDgYDVQQEEwdLUkVD S0VMMRAwDgYDVQQqEwdSaWNoYXJkMRgwFgYDVQQDEw9LUkVDS0VMIFJpY2hh cmQxGzAZBgNVBAoTEkZyYW1hdG9tZSBBTlAgR21iSDELMAkGA1UECxMCbm8x CzAJBgNVBAcTAm5vMQswCQYDVQQIEwJubzELMAkGA1UEBhMCREUxKDAmBgkq hkiG9w0BCQEWGVJpY2hhcmQuS3JlY2tlbEBhcmV2YS5jb20wggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCAuKsmME06IZLEk4WYbP329h3OU7z1 S4BvCEvGsa+lg9ks7Roh/JztY9Cr+e2I3quTajC2aRLM/oDnM+DoDA1sRkf0 CTVJj6T1F+C4SiJMnDxNYuJaAx9A//5Hh9fGMyz1gwYqgis1Q5zstaLM+P3Y manRlmMzAP1z3zTptYUmgy2bX+YIMCoz623L6WpnIq2ry9N/ywUxf3PzHS+L u+LbXi0MS8SUyMixcHHUx1TSYsTu6aDLLsEh5LoZo3vgcllXcG8H5/Nejzr+ KDlWMRUa3IFztDHZlozD5AX5dJan48nayi9ba5/Tp/gsSYru2GcvDwkSZBr2 Vl6/Ei1QUfvPAgMBAAGjHTAbMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgQw MA0GCSqGSIb3DQEBBQUAA4IBAQBKMlonehrc2BD/ddB5NL/NeRPN+fCb0+gD aXWuHOv6AtsxQxLBLbuvKmDBGFYN/r/NiBuvFOLYNjvapDKe8LXK/cObs2PT /GGjsUWJ9Q4pNH/3pj6Ejd/ZUYLeveZP2kVCWyMkEoSz5g/3TZGlaFUZqIG8 PqXPWvbKVChCIsGSsRvviRVM5QOMNLx3ZU9TrIg1kdCVRNoMjstcUoQlDPIh WGud9Qf9ydMrLn9IYjPpit9WBE+nTKzsLUok66OzxHGgCR6fhvRW2zRlTf82 yZ5oC74QOhixz/aj9uo4vGeV0yBPy9RCOcKxmiuOXZtAgLcgpKnfFIYXy1mL gWgJvxj8MIIEBjCCAu6gAwIBAgIFAQAAA1kwDQYJKoZIhvcNAQEFBQAwga8x KDAmBgNVBAMTH0ZyYW1hdG9tZS1BTlAgR2VybWFueSBBdXRob3JpdHkxGzAZ BgNVBAoTEkZyYW1hdG9tZSBBTlAgR21iSDELMAkGA1UECxMCbm8xCzAJBgNV BAcTAm5vMQswCQYDVQQIEwJubzELMAkGA1UEBhMCREUxMjAwBgkqhkiG9w0B CQEWI2F1dGhvcml0eS5nZXJtYW55QGZyYW1hdG9tZS1hbnAuY29tMB4XDTA2 MDMwNjE3MjEwMVoXDTA4MDIxNDA3MDY0OVowgbkxEDAOBgNVBAQTB0tSRUNL RUwxEDAOBgNVBCoTB1JpY2hhcmQxGDAWBgNVBAMTD0tSRUNLRUwgUmljaGFy ZDEbMBkGA1UEChMSRnJhbWF0b21lIEFOUCBHbWJIMQswCQYDVQQLEwJubzEL MAkGA1UEBxMCbm8xCzAJBgNVBAgTAm5vMQswCQYDVQQGEwJERTEoMCYGCSqG SIb3DQEJARYZUmljaGFyZC5LcmVja2VsQGFyZXZhLmNvbTCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBAIHgjPwHMQ/hDALcS6TPbqocnBJYV4wP Li5UGotq6dLdlfznTTyrE2I8yT70HG5jFutuDeGd+ix3DHhRke7MFROBg3xl 4JO0+NL1KC8nfoELXHIgidheQOw8heK20vvP+pTPaWmaAAyCQuFgL8a8AMRg 3lSMfU7wCds9+UirIF/dzd/ejzzKAYTAV7Jt1G7KbXCwx21pSrJNUOtNtwvY XnFT738GwJ1UYHdiEnJzyyOcUYQWUHBuYvz1jCyjQFKJ4rUYRujFmnA32b9L NrT/Xu87mDcyqT2iO+F9kPiQQCVUJm7dbqTIk584aSUWBUhMlm43PPBbanJR JNOGnWLQID0CAwEAAaMdMBswDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBsAw DQYJKoZIhvcNAQEFBQADggEBAAPvqm5/iuCYF3X3vEa/iMIyRarD34PUab/f mV5xqpcEUuB4E3QH1FNO9LqGxM72y4WnuoB84bauPelPJz38Scno3umSsELt AW1m7VInJ4lkTqRPXwt3EQOtCz7ZZcgewoH6maszJ4bSNlvbjHFhUVLudCEJ KAsaQ3yFZgTl6q6E3JKzDP2Y5TowX/Z0ZzrrkTJvIOiItWR1PsppyHYmzt48 /o0u0AXDnqVuE9Vo5fu+tGM186s08VicgWSGWRCiZ1gjt8aT8h4GLWsAtR2B TshXvI3GtS4ufbZvAXCIGBWpGH54kdARsDgxtYopfafVfsmT+BrFbjqZVMcv FswlTtsxggQyMIIELgIBATCBuTCBrzEoMCYGA1UEAxMfRnJhbWF0b21lLUFO UCBHZXJtYW55IEF1dGhvcml0eTEbMBkGA1UEChMSRnJhbWF0b21lIEFOUCBH bWJIMQswCQYDVQQLEwJubzELMAkGA1UEBxMCbm8xCzAJBgNVBAgTAm5vMQsw CQYDVQQGEwJERTEyMDAGCSqGSIb3DQEJARYjYXV0aG9yaXR5Lmdlcm1hbnlA ZnJhbWF0b21lLWFucC5jb20CBQEAAANZMAkGBSsOAwIaBQCgggJNMBgGCSqG SIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTA2MDkyMjA5 MDkwMlowIwYJKoZIhvcNAQkEMRYEFDxXJmPkR4rNqa6WWQNXb7QiQC2/MFIG CSqGSIb3DQEJDzFFMEMwCgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0G CCqGSIb3DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMIHKBgkrBgEE AYI3EAQxgbwwgbkwga8xKDAmBgNVBAMTH0ZyYW1hdG9tZS1BTlAgR2VybWFu eSBBdXRob3JpdHkxGzAZBgNVBAoTEkZyYW1hdG9tZSBBTlAgR21iSDELMAkG A1UECxMCbm8xCzAJBgNVBAcTAm5vMQswCQYDVQQIEwJubzELMAkGA1UEBhMC REUxMjAwBgkqhkiG9w0BCQEWI2F1dGhvcml0eS5nZXJtYW55QGZyYW1hdG9t ZS1hbnAuY29tAgUBAAADWDCBzAYLKoZIhvcNAQkQAgsxgbyggbkwga8xKDAm BgNVBAMTH0ZyYW1hdG9tZS1BTlAgR2VybWFueSBBdXRob3JpdHkxGzAZBgNV BAoTEkZyYW1hdG9tZSBBTlAgR21iSDELMAkGA1UECxMCbm8xCzAJBgNVBAcT Am5vMQswCQYDVQQIEwJubzELMAkGA1UEBhMCREUxMjAwBgkqhkiG9w0BCQEW I2F1dGhvcml0eS5nZXJtYW55QGZyYW1hdG9tZS1hbnAuY29tAgUBAAADWDAN BgkqhkiG9w0BAQEFAASCAQAY7X815dAHIZl0Ce3fETSlFewq6cePWUQUNke9 kiXF7m8Ta7+EtClxrXdiGO31SlJhAxmLWaT6NP62/qLH8Bn/vRNyTiH2Btxb /mZqc6WcRSojL1StrXwiRdRVxKAZCmB7lpdZBcFZEv4n8nJN0pgaGqo4hPLd 65hrXoiJlVEjBGPPyUfEemkxl3Unx/5BZfXOM5L2drzcQPvL7Doos8QZzbqB ECG70rr6y1xHVaSAuR3c1lJyop0iasoHQtyX1ugZ/sng6l349EwYKYjKvlko g96UpGvDyIkRXeYsMpEe4qxqjYcZpVvg4u5DX7PpsJHTeXPfBsapU0PaJikE LetgAAAAAAAA --------------ms020103050803030909040909--