This is the mail archive of the gcc-bugs@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]

[Bug c/28001] New: incrementing a variable produces smaller code than an explicit assignment


I'd expect that at least the same code is generated for both cases as opposed
to creating worse code for the case where an explicit assignment is done.

I had hoped that the explicit assignment actually creates smaller code.

$ gcc -DDOINC -Os -march=i386 -c -o scan.o.orig scan.c
$ gcc -UDOINC -Os -march=i386 -c -o scan.o scan.c
$ size scan.o*
   text    data     bss     dec     hex filename
    127       0       0     127      7f scan.o
    123       0       0     123      7b scan.o.orig
$ cat scan.c
#include <stdio.h>
#include <dirent.h>
static void check(int pid) { fprintf(stderr,"found %i\n", pid); }
int main (void)
{
  DIR *procdir;
  struct dirent *entry;
  int foundany, pid;

  procdir = opendir ("/proc");
  foundany = 0;
  while ((entry = readdir (procdir)) != NULL)
    {
      if (sscanf (entry->d_name, "%d", &pid) != 1)
        continue;
#ifdef DOINC
      foundany++;
#else
      foundany = 1;
#endif
      check (pid);
    }
  closedir (procdir);
  if (!foundany)
    return 1; /* bb_perror_msg_and_die("nothing in /proc - not mounted?");*/
  return 0;
}


-- 
           Summary: incrementing a variable produces smaller code than an
                    explicit assignment
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: aldot at gcc dot gnu dot org
 GCC build triplet: i386-linux-gnu
  GCC host triplet: i386-linux-gnu
GCC target triplet: i386-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28001


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