| Bug#: 9967 | Product: gcc | Version: 3.3 | |
| Host: | Target: | Build: | |
| Status: RESOLVED | Severity: normal | Priority: P3 | |
| Resolution: FIXED | Assigned To: unassigned@gcc.gnu.org | Reported By: beszedes@inf.u-szeged.hu | |
| Component: middle-end | Target Milestone: --- | ||
| Summary: Some standard C function calls should not be replaced when optimizing for size | |||
| Keywords: missed-optimization | |||
| Opened: 2003-03-05 14:26 | |||
| Description: | Last confirmed: | Opened: 2003-03-05 14:26 |
GCC replaces calls with special parameters to some standard C functions to
equivalent ones in order to increase performance. E.g. fputs with string
parameter -> fwrite.
However, some of these calls take more instructions, which is not good if we
optimize for size. These replacements should be avoided depending on the
optimization switches. (See example below.)
Release:
gcc version 3.3 20030224 (prerelease)
Environment:
BUILD & HOST: Linux 2.4.20 i686 unknown
TARGET: arm-unknown-elf
How-To-Repeat:
This simple program demonstrates that fprintf is replaced by calling fwrite in
the assembly output (arm-elf target with newlib library):
#include <stdio.h>
void foo ()
{
fprintf(stderr, "Comment"); // fprintf->fwrite
}
ldr r3, .L2
ldr r3, [r3, #0]
ldr r0, .L2+4
ldr r3, [r3, #12]
mov r1, #1
mov r2, #7
b fwrite
However, calling fprintf would require two instructions less:
ldr r3, .L2
ldr r3, [r3, #0]
ldr r1, .L2+4
ldr r0, [r3, #12]
b fprintf
State-Changed-From-To: open->closed State-Changed-Why: On submitter's request.
From: Arpad Beszedes <beszedes@cc.u-szeged.hu> To: gcc-gnats@gcc.gnu.org, gcc-bugs@gcc.gnu.org, nobody@gcc.gnu.org, gcc-prs@gcc.gnu.org, beszedes@rgai.hu, ghazi@caip.rutgers.edu Cc: Subject: Re: middle-end/9967: Some standard C function calls should not be replaced when optimizing for size Date: Fri, 28 Mar 2003 11:13:17 +0100 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=9967 This PR can be closed, because a patch has been implemented and applied to 3.3 and mainline: http://gcc.gnu.org/ml/gcc-patches/2003-03/threads.html#00425 Thanks, Arpad Beszedes
From: "Kaveh R. Ghazi" <ghazi@caip.rutgers.edu> To: beszedes@cc.u-szeged.hu, beszedes@rgai.hu, gcc-bugs@gcc.gnu.org, gcc-gnats@gcc.gnu.org, gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org Cc: Subject: Re: middle-end/9967: Some standard C function calls should not be replaced when optimizing for size Date: Sat, 29 Mar 2003 23:49:33 -0500 (EST) > From: Arpad Beszedes <beszedes@cc.u-szeged.hu> > > http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=9967 > > This PR can be closed, because a patch has been implemented and applied > to 3.3 and mainline: > > http://gcc.gnu.org/ml/gcc-patches/2003-03/threads.html#00425 FYI, Gaby approved it for 3.2.3 via private email, and I've just applied the patch there too. -- Kaveh R. Ghazi ghazi@caip.rutgers.edu