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]
Other format: [Raw text]

optimization/9723: With -Os optimization increases size if the loop contains array element access


>Number:         9723
>Category:       optimization
>Synopsis:       With -Os optimization increases size if the loop contains array element access
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          pessimizes-code
>Submitter-Id:   net
>Arrival-Date:   Mon Feb 17 15:26:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Tamás Gergely
>Release:        gcc version 3.3 20030210 (prerelease)
>Organization:
>Environment:
BUILD & HOST: Linux 2.4.20 i686 unknown
TARGET: arm-unknown-elf
>Description:
When an array element is accessed in a loop, gcc makes the following optimization: it counts the address of the first array element before the loop, and then in/decreases this value by the element size within the loop. This makes the loop faster and shorter than in the case of -O1, but the overall size increases (as opposit to the purpose of -Os).

Compare the result of arm-elf-gcc -S -g0 -Os with the output created using arm-elf-gcc -S -g0 -O1. GCC should produce the later kind of output with -Os.
>How-To-Repeat:
arm-elf-gcc -S -g0 -Os

// 01.c:

# 1 "01.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "01.c"
typedef struct {
        int si1;
        short ss1;
        char sc1;
        int si2;
        char sc2;
        short ss2;
        short ss3;
} st;

int f1(st* p, int c, int n)
{
  int i;
  for (i = c-1; i >= 0; i--) {
    if (p[i].si1 == n) {
      return 1;
    }
  }
  return 0;
}
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-gzip; name="array-in-loop.tar.gz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="array-in-loop.tar.gz"

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
8PDw8PDwvIu/AE7esL8AKAAA


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