This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

optimization/4069: gcc -O2 produces bad code using gcc 3.0 on i686-pc-linux-gnu



>Number:         4069
>Category:       optimization
>Synopsis:       gcc -O2 produces bad code using gcc 3.0 on i686-pc-linux-gnu
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Tue Aug 21 07:46:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Phil Hatcher
>Release:        gcc version 3.0
>Organization:
>Environment:
i686-pc-linux-gnu

Configured with: /export/gnu/gcc-3.0/configure --enable-languages=c++
Thread model: single

linux 2.4.4 running on rh7.1 (Pentium III)
>Description:
gcc -O2 produces bad code for function given below. Correct
code is generated for no optimization or -O.

The problem is that with -O2 the 3rd param passed to fprintf
is uninitialized garbage, not the bytes set by the assignment
to T0.

More presisely, the bad code generated is:
main:
        pushl   %ebp
        movl    %esp, %ebp
        subl    $12, %esp
        movl    stderr, %eax
        movl    -4(%ebp), %edx
        movl    $0x3fa00000, -4(%ebp)
        pushl   %edx
        pushl   $.LC0
        pushl   %eax
        call    fprintf
        movl    %ebp, %esp
        popl    %ebp
        ret

That is, %edx is set prior to the initialization of -4(%ebp).
And %edx is then passed to fprintf, causing garbage to be
printed.

The uuencoded, gzipped, preprocessed file is attached.

This error also occurs using CodeSourcery's Online Test
Compiler. The code is slightly different than what I
see using 3.0, but it is still wrong.
>How-To-Repeat:
#include <stdio.h>

main()
{
  float T0;
  T0=1.25;
  fprintf(stderr, "%x\n", *(unsigned int*)&T0);
}
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="b.i.gz.uu"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="b.i.gz.uu"

YmVnaW4gNjAwIGIuaS5negpNJ1hMKCIkRSdAQ0xgYFYoTjowIz0nJk1PVlxDUU5XWCVGVCwrNlUl
QjJbKj1JJCpOTi1bWTcqLS4nI0JeCk1gRDQ6JCEyVU0nR0ZaX0IwWzE7WVtZVzkhW0UvNEs5VDdS
WWAnJylXV0ssWy5TLStZU01PWktVOE9AWT8KTUMrWyNJWC5GKkBeMi9gUjJAUjE+J01SJFgyT1wt
U1lZPl8qSlAuPkw+N0FVRFM0J1xdPichVyQ2KUxWKgpNJyUzVSpMWT9XW1hgYEcsQCxTXzlFTFk8
JEQ5LDFCMkhGWSk0JzlfOVZXRC9DKFUmXTVAPUEiTDIqNDIuCk0+SEMsRiQrMy9GJUxDJSJTSkZa
NiRKL1k9IzssWixWVkVELFpdLF02V0AwMz04KS9XW1c7Rk0pXDUjXDYKTSElWlwpSk9CRlhSTE8j
QktPMkteK18nSyEzYFlGTl0kPF0sM1JbQk4jSSJZWy8uMzdKYC01XV47N0IrLApNJDtPU1BPUVBg
VzomRDwvO0gvMVxPXydRODYnLjVbPVk2NSxgXkYyITAjP0EvL1FLRjRXUlsoOS5YXC1CCk0tLyld
XEVgM0YsVFNXXz9MWC8yJygvTTskWlFQIT1AMT03QCEjPk9FVzhgKyEwRzUkJCNGSzZdMzEhQSoK
TSFVI0xRKDJgR10sMypRJDlKQydgJSgvIlNfRywySjEjOVBgLlRTQEwiQ10vQ01QJj03TkIxNlBF
JE47VgpNUU9gNEslOkUtQk48IVhcS0xJOVVYPk4lREVXOSlWWywiO1o2WEJSV0haM1lCTUFHLE1B
Ij1fKjRJJUA+Ck0xMkkyKlcyQjMzJ1gwQTYsIzU4QjQlR0QrOSxYVTo9OidDQylTJkkqUzFBVVJa
LE5GW2A+Pj1bX1gqXycKTSY6XiNZLE9MWlApJk9MJTs1JyQ8MztSNVwoWDhJSkw5VyE7SiRZKUFa
Q0BFPzBOUChGJj5LMkgnPUM0VApNP1tdLFtBM11JLEQwQE4mPTMxJFo4PTwxUTY0S0QvWTEpXl8o
SFhJQ1c5KVEkMEtXQ0pRUkA8QyJUNlooCk0sKkw9IlhJLVxFVUQ2UkkxOTwuN0VITGBaKjQxUTRE
XyMwOUBIXSQiUDI4U1ldRiY4J00mR1k0N0NFXyEKTTQxOjRVTDZDUCM0PUguWFFeJUc0STwtST9g
RyE2REEoKUtTQS4tSiteSzhEUDRIX1g/NyxUYElLLl5ASQpNOCE3PkRFNSdbPjFNK10hXFEvOE5S
SFFDP0EmNDA6S005I1kzUUdEOVVYXVQxXixZLU0uUzNaTkBbJzA3Ck03L0JMJ1A1NUMxTUZBJ1NE
TzU9I0tFKEEiX1k+USFHIkAxVl8qNE0/KVtAQjU1Q1o/JzJMI0JfND89PUoKTSsoIiImTVE5NDUl
WDQiKVUkLVpCKyQwMiE6VTBZJEQ8NEEvOFstOSJYNE4nJjY+VyEiUSdJVjFaPjQnKQpNTFdWKyFU
TDNFIk1cRFghYEQjTDoiMk0yWF9gWkNVPDgnTUwpQTAoPTkxMl4+OElaTTw1WjUmLjc5UyJECk1e
PFNUR0Y5Ri5HND9RJzYsQjUvJyIoLkpGUSRXOzkuRkNTSTIpWiVVL1BHMC1FM1YsNEFdMic1KU45
OS0KTUcwKjcpSk5NRkoxXj9JXjE0QDpeQlsvNUhNXFQqMz0tSVQ/OlUuMUEyJ0wqUSxBS0YhOEdS
OktHNjxCSwpNQz5GMS05TFZYWCxbT0BGQkcpWVUmUk9bJVcrNlhVVzQuLV1ZUVVPNzJHLUMnWV0/
XkNePzdZUVpeYCxVCk0uT0Q9Pj9CXlgvKUYhVVMsJGBbSDJDTSJdVzRbO1QvVlNXYFcxPyUtMVRg
Ty0xMDBZUUZCRzRBMzcwSiUKTUJCQzs9VTxPU01ZTlQ0TFBKTzlWVj1dQzpMRDY/PT8wVidFP1gj
WUYiMFo4WFdDKDspOFM9LSEhNShPLgpNNUQ/Wl49Wy5TVz9IJDotRDs7R1RNMlhUNDhePUpDITtH
LkE9IjRENTlUMU1gV04zMDtHOClCWywiU2AvCk0tITlUQSU/KVwrW1w8TTI2KTUiRC0vMlBBLUJc
SWA8XlxdVUxUJzxWRDdDKUFKRSUzSSw4QjJJLztBQlMKTSxTXCIiKjciVUpBQCRLTEknOTtQQEk+
Pk8pQU44J0s9VFVRSllZXzk1VktRJzxPRENbTjg5U0gzRVJGVgpNO0pYWT89S1Y0VEc2SSdRRUc/
VVhePyU/X040X08/Pz5YNDA6XjdCKV9aQEMvX1U9Pz9dUF5GJFJERDkuCk0vV1JaX0s9X19PJzMr
XTxSWCxeXzclU1hFW108OlwvRyVRPkc5U108Ri8jRydXXlxfLyNJWE8zWjUsUTkKTUwnWFpfP1ND
VT9GR1pcTEslPzdaXS5IQzMpXT43NVU+XDBLIVQvO1xMV19RUF49SzUvR0FcLyFQSkVgWApNXldB
WT08S1AvUE4oJjo/NElPQzRJKyNNMismUCM/SjBQYDsmMykoJypSQCxcTjZPKSpSLVY7SCxMSEhD
Ck06Q0c/V0VAYDE2Jl1bXlU5LidLQ0I+PDIhLjlIUCcvXVA5Qjk1Ozc2L1FQIzE8PSwvU0YzIypd
JlhgRlQKTUgzX1ZdMipaNFMnLlhLSS9TX1ROMS0rMklcLEQ0JlNUKFNKOSxOL1c2Oz03OT86R1Ff
WlwyTU4kUkstTApNL04jKCs9QF5CWUFQPiheO0Y8N0EkNEg9WDZdTkkmVSwsKjMuJFRALDY2KTBO
PVw6NENZUlU4MFxASTtaCk1PSUU1R1ZBOzoyLFFQUCk7RjpFWyhTJ1w7Q0xRPSYzSEMlRDA3VkQw
VTs4Mz1MWyRcXChgRCtTP2BESUMKTSlAKDdKMDdGW1coO0FgNTA4Uy1WREIpMCFBUDZbSUJOTSQl
TFA5T1Y2VltBOi85T0BWUjUkIjpJOyVTOgpNWDxeIiUqOzRTITA7IlIuT0E4SyovLzQ5NyM9OFlX
WisqRDVeWyg+SjVBJE5JQlZFViMhOjlaWzY0Ki0uCk1HIzMuUCFgJE00KElJJ1knXC4iOFojI0pX
YEovUFFUJ0ZJOSYzNCg1NDFXRE0rVTgzPDteQFIyWEo5PS0KTU0nIS8kNlJDMi9SQykrQklFKSRY
NlQtVjU+LF00TjwtPjFJJkxCIyEiUC1OXzJbLSdHLiUiRj9eMzJHVQpNK0NTWk1HIVQrRU5HMUNF
O0A6KilFWiVBKkxOSjlGPjNbWz9TWkQ2OVxUIUI3TyJePyw2Okg9T1YiW0ZPCk1YWlFTTkIoN1pS
Tys1RCQlPCtFKys7LlYjLkwjWzNFIU5XV11DNlpEPSFFRzksNEtHRUEoS1s7RVNcM0UKTSlGIUAs
UlU+LU5gTlddTztYXT1PL0g7RT9ZU1tfT1teX0wqIkJVPjZPO0I/PTVSVVo3XzZXSUxeMzAoOwpN
RTxVRUwxMGA7OF1IOUpdNEsjVkQ5WTBBMDJEVUZLO1kiKCgzWk06OltSXjsuKkRBX0pQIy9YREtO
RDpSCk0pQTJPSi86UV9ERipJTztUNiJcRik7VkVNTVpPMzVLYDpNKFs/OzIhOFVSPjIiMjRQUTJR
TkhNISo9MyEKTT4hSjQ9WjNUWSlXM0M4W1lYPjA5Rzw6UTddJ1BVXDRLVkBPYDtVSVonJEkjIzU5
YD0tXkwyK0JOTDFfPgpNKSoqVShgO1NOWEdSN0AxRScwPikuREMqLEJfNUgyUydbMz1CJVQjJz5J
JUstUyc1SVZXOT0mJjpHWCVDCk0iRDBbVEQ1PStMUTFQTUtRVk5AUkooQFo/JV8mTCU1PFhQOU0t
RlAwIVpNOzouYEguVyM6QFFNJkpWIk0KTSxGMyNSUiJcOlBLKyEoNDc5JlJLQDNVNF5DUT8kNGBI
U0tINChYSDNERzRHLFtcIjdMQi1KI1E5WDIuXQpNLyooJlVTXj8iOUwyPylMVDo8OE5ESjBPMk05
VUwkUShCUlk6OiEwMVMvJUVeSTczWyU4X1IsQ04xOyFVCk1LPV1DMkhNIzo3KSlcTEY5MFEmTElA
T1U/PTtJQ0omUDxYOz85JyImS1Y5P0lMPz5GKVpEPj4zTTg+N0kKTU84KVhUYFdRVy86S04kXVRd
T0c7LCMjMjVbKT8pJ0EjLjwqQ01cUVQzI0krV1Y7XlUsPT4/XjhPLUg2JQpNTyY5UzgtQjwvQzdU
RDMsMlJBJlU6Ty4rLiY8OyosSiQvNyFbWVc8UUY7MDklT0FXKEY0RFJcPjo1L09CCk1gUDg3NTs6
QTsmM1U7IUcpI1k9YCc3XjMtPF9APEtcQlksWyE0WlJQLD5WQzNDQy5PNSUqNDNJQURFPFYKTVg9
RDleVFlPSzRIVllPW0JXWVlEWClASFI+X0FFJlhXW0taV1QqYCYoPypVMjg7VTRDSyhLTERdUSU2
IgpNV2BDKlNJVy0oUCo8XVw7LUE8LEJAJ10jWkUiRiEqRVpIMkwsRFQ2IzgrUVhGR0IjXCEnPVQx
TmBYMkVGCk1gUzAkQCo3JFtLUEEhTUtAOjdOMVg7Myc/SDNQJihEPTFOVGBGVlBgTSk2WCtBXT1I
KUJSO1ZbWT01MiUKTTA6OTgiOFArIjAnREU2Jk0tQENEIj4/PjUvLFBNSjcmJzopJUY3NTRFLyJM
PjxITlBCODI6IikoJyo1SApNQSxYLDVJRlE+Mjg9RCgwSDg1NlA1QzRUVDo7SlQjSiZbMUYmSish
WlglVSU7RCZEOUpATEw0WGBYRTA/Ck1gOUVbTVshKjBEMyokNCFELVk/LEZaL0cpXj1SM09XVls7
OVRJIS0pVyglWVhCSCw0TU9NL1IpVz9RPiUKTSQrIUQ0TkU+PltaVS9PUi5BO04kVjlQPl5ATUMj
YFlXPFEhQiRbTEpXTiheVksrVzJZKSIiLT9bRCNbKwpNJiguNFotJk9JKixGLyoyL1lOJj1EN0wx
IzE1VVpLMUAkME03KUVNWFRTPTtfVVkmSlE9QyNUUWA1Jl0vCk0iJS1JSExBMD9KRyFANCJbNiwo
SipcKEVUTFZUQkRPMz1EN1RMI18yUElFMVkwPCkiKD9VTzooOV5CRkIKTTY4SlcpXChIISRMMkkr
SFdIUEEyUTVMS0VgNy45XjwyJ0dERmBBMVlUXVZZRC0mL1xIKURJS1UkWi8+WgpNOTZIXyE3SDBM
MkpIOSctUENCNzlETjxQNVE+Pj9OKVlGR0YvPUZbPiU9LjUtVDRNJltCVSRNW1g7V1RUCk1TKTQj
IjJIWTIuWltJNjJILzslOSQlIyxZMEZEVUxeQzk/PSVdUkVeKT08VjZAIjFNKCMsPDY/LC8/REsK
TTM3QUA3IzY+OCZGQjoqU0w3JjdLQkozKis9WTNdVFo0RVZEYDo8O0tVWl9VQC0pRjwsXyJLQDJa
ITxWUQpNOzlbYDIuOlRbQzYrTjElLExHOz9KMkRHQU5TUjFNPVJfMDBDNj5ESUsjNzpfMjs8TzVa
Sl9bKV5bTlZaCk0zSCwnQiolLjdBTlk9LkFQOSsiTCI8WyRcT1YpLVldWDFbMD1LRUlNKVgpTyhP
RlAwWV5CUkonSFssXlcKTV9OSTZSMEklLD9CVEYvJywzPF9LU048QSNWLztgXD9GWy8hNz83PVdc
RStLTEM6JyY7SEUmIT8oMmA9IgpNXj1MXD5DMzJQU14iXS45TSlDRCk3KjpLKl0hK1UzQiRVKFkt
S1FCI0wiLD1GTUpgKF1DLTBgNjApLlpFCk07TSM/Iy0kNFJMMzNGVC88Wy8+I0tAOipdWCsqXzgj
ODskVkNEUkk3MCYuJExERS9USkY9LE1DKFZUJy0KTUs4QkgyRUIpS002Lj1RTjhLQUooJCRcUlBY
WkNANVZcUkNRPUZYUCVBP1pVSlc6SihOUz89WFVKMjtWQgpNK0I9SkhORFhVO0tcTVxdLDRFUDZL
JkYzT10tTCZRRCZBN2BLS1Q2UzlUT1A5Jy84SyIkKUxRLlMvLC0pCk02RVMkNUooPj8iOzpLUTpX
XVImVylgTjVDRWArJV00RDI/SlojNTMtRE1TJ0Y6LVs8J1JYWFEwJi1AT00KTUQ/OjQ5O1JNSiVE
X0tfSFI7K1IhNS5AKjhMKkEnNSZEUSczOzg+RS4jMURGKSJBKTYwW1Y9XkMlUVFgLApNTl83SEJS
OCpUVFczIjYyXi4yUCpMNkUqMDw0SVEmVi0oVyhKOj4pQ1k2PlRAXUtWVFU0RF1IOUBgKDY5Ck0u
N1giIThZW0xdTU4qW04nV1IxQUhIIiNdTSJaNVg2XT1RN0Y6MUlEPz5UPS09NVBNUFotKSIuJFlR
Ml8KTSQ9NC5cOS9JJU9ePUJGVyUyWT1HQFxVKlk1KkwpWl1CQS43Ky1FTUAuRkVfQz8pV05GSjA/
RC8jXk9dXQpNRiE7ISNRKlFgWDNKQ0M5SilaMy5UQS5fTUJFKVc6YF1WSjgoTlgyOD0pQChOQUFd
WlZSR0IqIzYoMyspCk1bRSo3V0c1UCZGWEpFQTQ/JTBJJTZAXDdeWl5eRVNcJVxLWV9bUUdDISha
Ok9URTdaLzFOXUpfPj4kX18KTTdNTSQhOShPN1BYS0slPSpKSVEsOFhOQFFIMEYqOU1XQiZKQ1ZM
SUpFXThIRDcwL0w4SitZSTMsXFtXRApNLUpWRTUmT0xNPi0sXU85MypeWFtSUjI4OTlfOjE/SyhI
I1VONT0uUCteR1dUNkMmUS1DKV5ONStbU1UnCk07IzVWNk9gL0pHJy9ASyY0S1lKJj8rNzhdKy0s
NjswM0A+OElOTUY5WklJIVEpVTpfXy5KQDcjOkdbN1QKTT4pQV5LPkNdUTNNXEYhW04+V11aW1FX
VjYnQEhXXUYoU1RTRkBQPzVVRURGX1hVJF1HX0U+Oy8xKmBXQgpNOyhdKWBQWCs6Tl9aJCteVE5T
WVwvV1RdLlw5Jz9GO0xMMk9KQj8/QlNQX19SNVksWS1AJVxeL11PVVBTCisuP1wvUCJaYCtYTS9g
YGBgCmAKZW5kCg==


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]